$.getjson未从node.js response.write返回对象



我是node.js和json的新手,在将json对象返回到使用$.getjson的客户端html页面时遇到问题。

在下面的例子中,当我将相同的代码指向api.twitter…url时,我可以查询并返回值。但是,当我把它指向我自己的node.js后端时,它会吐出相同的JSON,alert('inside callback: ' + data[0].is_translator);不会弹出。我在这里做错了什么?我真的很感激这里的帮助。

这是我的test.html中调用$.getJSON.的脚本代码

<script>
//var url = "http://localhost:5000/searchPlaces?callback=?";
function abc(result) {
//var url = "http://localhost:5000/random"
var url = "http://api.twitter.com/1/statuses/21947795900469248/retweeted_by.json?callback=?";
alert('before $.getjson');
$.getJSON(url, function(data) {
      alert('hello');
      alert('inside callback: ' + data[0].is_translator);
      abc(result.data);
})
}
abc();
</script>

这是我的node.js后端的代码:

var http = require("http");
var url = require("url");
var port = process.env.PORT || 8888
function start(route, handle){
        function onRequest(request, response) {
                var postData = "";
                var pathname = url.parse(request.url).pathname;
                console.log("Request received for:" + pathname + " receieved.");
          response.writeHead(200, {"Content-Type": "application/json"});
          var otherObject = {"is_translator":false,"id":644233,"followers_count":77};
           response.write(
            JSON.stringify({
              anObject: otherObject
            })
          );
          response.end();
//              route(handle, pathname, response, request);
        }
        http.createServer(onRequest).listen(port);
        console.log("Server had started. Port:" + port);
}
exports.start = start;

只有当JSON有效时,才会调用$.getJSON()的回调。您的twitter api http://api.twitter.com/1/statuses/21947795900469248/retweeted_by.json?callback=?的url在JSONlint.org 上提供了一个JSON,其中包含以下错误
Parse error on line 1:
([    {        "is
^
Expecting '{', '['

您可能应该$.get()url,然后在使用JSON之前自己验证它。

最新更新