1

我在客户端使用 html,而我的服务器端代码在 node.js 上。我在 nodejs 应用程序中定义了一些 url,我从我的客户端 html 文件中调用它们。我正在从节点调用位于另一台服务器上的 REST 应用程序。这个 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 控制台上的 response(res) 对象时,我看不到这个 json。谁能告诉我怎么才能得到这个回复。

4

1 回答 1

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();
}
于 2013-09-04T10:03:05.720 回答