如何在node.js响应对象中设置JSON数据?

时间:2013-09-04 09:45:53

标签: node.js jquery express

我在客户端使用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。谁能告诉我怎样才能得到这个回复。

1 个答案:

答案 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();
}