从客户端调用服务器端REST函数

在这种情况下,在服务器端有一些与REST函数存档restApi.js 。 我的REST函数工作正常,我用提示命令testing。

在我的客户端有一些档案index.ejs ,我想用这个文件调用。

我的restApi.js:服务器端

 var Client = require('./lib/node-rest-client').Client; var client = new Client(); var dataLogin = { data: { "userName":"xxxxx","password":"xxxxxxxxxx","platform":"xxxx" }, headers: { "Content-Type": "application/json" } }; var numberOrigin = 350; client.registerMethod("postMethod", "xxxxxxxxxxxxxxxxxx/services/login", "POST"); client.methods.postMethod(dataLogin, function (data, response) { // parsed response body as js object // console.log(data); // raw response if(Buffer.isBuffer(data)){ data = data.toString('utf8'); console.log(data); re = /(sessionID: )([^,}]*)/g; match = re.exec(data); var sessionid = match[2] console.log(sessionid); openRequest(sessionid, numberOrigin); // execute fine } }); function openRequest(sessionid, numberOrigin){ numberOrigin+=1; var dataRequest = { data: {"sessionID":sessionid,"synchronize":false,"sourceRequest":{"numberOrigin":numberOrigin,"type":"R","description":"Test - DHC","userID":"xxxxxxxxxx","contact":{"name":"Sayuri Mizuguchi","phoneNumber":"xxxxxxxxxx","email":"xxxxxxxxxxxxxxxxxx","department":"IT Bimodal"},"contractID":"1","service":{"code":"504","name":"Deve","category":{"name":"Developers"}}} }, headers: { "Content-Type": "application/json" } }; client.post("xxxxxxxxxxxxxxxxxxxxxxxxx/services/request/create", dataRequest, function (data, response) { // parsed response body as js object // console.log(data); // raw response console.log(data); }); } 

我的index.ejs:客户端

 <html> <head> ------------- some codes </head> <meta ------- /> <body> <script> function send() { $.ajax({ type: "POST", url: "restApi.js", data: '{ sendData: "ok" }', contentType: "application/json; charset=utf-8", dataType: "json", success: function (result) { alert("successful!" + result.d); } }); } </script> <script src="restApi.js"></script> </body> </html> 

我试着看别人的例子,但不工作(Ajax)。 我需要知道如何解决这个问题,如果有其他的最佳做法,请让我知道。

在我的控制台(Chrome)显示如果我调用ajax函数: 在这里输入图像说明

SyntaxError:位置2的JSON中的意外标记
在JSON.parse(<anonymous>)
(C:\ xxxxxxxxxxxxxxxxxxxxxxxxx \ node_modules \ body-parser \ lib \ types \ json.js:88:17)
在C:\ xxxxxxxxxxxxxxxxxxxxxxxxx \ node_modules \ body-parser \ lib \ read.js:116:18

如果我点击(BAD请求)显示:Obs .:与app.js相同的错误,但app.js工作正常。

 Cannot GET /restApi.js 

如果文件restApi.js是索引后面的文件夹。

夹:

Obs .:公共文件夹有index.ejs

在这里输入图像说明

       

网上收集的解决方案 "从客户端调用服务器端REST函数"

你的问题是不好的url。 如果你有像这样的结构,你必须指出如图所示 像这样指向你的网址../restapi.js

根据错误,我认为你通过AJAX发布的数据是不正确的语法。

改变function send()如下。

 function send() { var obj = { "sendData" : "ok" }; $.ajax({ type: "POST", url: "restApi.js", data: obj, contentType: "application/json; charset=utf-8", dataType: "json", success: function (result) { alert("successful!" + result.d); } }); } 

这应该可以解决你所面对的错误。

现在试试这个…

 function send() { var obj = { sendData : "ok" }; $.ajax({ type: "POST", url: "Your url", data: obj, dataType: "json", success: function (result) { alert("successful!" + result.d); }, error: function (error) { console.log("error is", error); // let us know what error you wil get. }, }); } 

你的url不是指向js / restapi js。 你在js / restapi js中有什么代码? 如果你的行动页面是应用程序js,你必须把它放在url中。 url: 'JS / restapi.js',