从客户端调用服务器端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
你的问题是不好的url。 如果你有像这样的结构,你必须指出如图所示
根据错误,我认为你通过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',
- 如何发送ObjectID与Ajax到后端(Node.JS)
- 更新Node.js护照用户
- nodejs https api请求错误错误:在TLSWrap.onread(net.js:568:26)处的exports._errnoException(util.js:1018:11)处读取ECONNRESET
- 2 jQuery AJAX post req与同一个对象
- 当两个Ajax请求完成时,做callback最简单的方法
- 我怎样才能转发传递给nodejs的查询string通过res.render服务的页面?
- 获取文件作为AJAX的回应?
- 将variables从jQuery ajax传递给nodejs
- NodeJs exec-php模块,php不是一个命令