我在客户端使用html,服务器端代码在node.js上。我在nodejs应用程序中定义了一些url,我从我的客户端html文件中调用它们。从节点我调用我的REST应用程序,它位于另一台服务器上。这个休息应用程序是用Jersey java web服务编写的。我可以从我的html和节点代码调用node.js我从Jersey Web服务模块得到响应。收到此响应后,我将其设置为node.js的响应对象,但此响应在html jquery ajax调用中不可用。
$.ajax({
type :"POST",
dataType: 'json',
data: jsontest,
url: 'http://<code>localhost</code>:9999/hello',
success: function(data) {
console.log('success');
console.log(data);
console.log(data.id);
}, error : function(response) {
console.log(JSON.stringify(response));
}
});
服务器端代码:
var tmp = req;
var authentication = JSON.stringify(tmp.body.authenticationKey);
console.log("authentication :- "+authentication);
requestObj({
url : "http://<code>restserver</code>:port/restmodule/controller/hello",
method : "POST",
headers : { "Content-Type" : "application/json","pubKey":authentication},
body : JSON.stringify(tmp.body)
},
function (error, res, body) {
indexresponseBody = JSON.stringify(JSON.parse(body).message);
}
);
res.writeHead(200, {'content-type':'text/html'});
console.log("JSON returned from REST "+indexresponseBody);
res.write(indexresponseBody);
res.end();
我能够获取json,这将打印在节点服务器控制台上。但是当我将这个json写入firebug控制台上的响应(res)对象时,我无法看到这个json。谁能告诉我怎样才能得到这个回复。
答案 0 :(得分:0)
可能是因为回调的异步性质,试试这个 -
function (error, resp, body) {
indexresponseBody = JSON.stringify(JSON.parse(body).message);
res.writeHead(200, {'content-type':'text/html'});
console.log("JSON returned from REST "+indexresponseBody);
res.write(indexresponseBody);
res.end();
}