0

node.jsとjsonを初めて使用し、を使用しているクライアントのhtmlページにJSONオブジェクトを返すのに問題があります$.getjson

以下の例では、同じコードをapi.twitter .... urlにポイントすると、クエリを実行して値を返すことができます。しかし、これを同じJSONを吐き出している自分のnode.jsバックエンドに向けると、alert('inside callback: ' + data[0].is_translator);ポップアップしません。私はここで何が間違っているのですか?ここで助けていただければ幸いです。

これは、$。getJSONを呼び出す私のtest.htmlのスクリプトコードです。

<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;

4

1 に答える 1

0

のコールバック$.getJSON()は、JSON が有効な場合にのみ呼び出されます。Twitter API の URL は、http://api.twitter.com/1/statuses/21947795900469248/retweeted_by.json?callback=?JSONlint.org で次のエラーを含む JSON を返します。

Parse error on line 1:
([    {        "is
^
Expecting '{', '['

URL を $.get() してから、使用する前に JSON を自分で検証する必要があります。

于 2013-02-20T17:02:27.687 に答える