AngularJS从HTTP.JSONP返回JSON中获取语法错误

时间:2013-10-29 21:02:08

标签: javascript json angularjs

我无法让NYTimes API正确返回JSON。我确信这是对我们做错的事情。我尝试使用ESPN API,它工作正常。不确定我错过了什么。这是一个代码。

app.controller('espn', function($scope,$http){
      //var url = "http://api.espn.com/v1/sports/news/headlines/top?limit=9&apikey=n39jrj4s97tvhxym4qgacnrd&callback=JSON_CALLBACK";
      var url = "http://api.nytimes.com/svc/news/v3/content/all/all/.json?&limit=20&api-key=1f6ef65ff5bb290bdcb01da786c788de:2:67858849&callback=JSON_CALLBACK";
     $http.jsonp(url)
        .success( function(data){
            console.log(data);
      });
});

我在错误控制台中收到此错误。     未捕获的SyntaxError:意外的令牌:

这是掠夺者。 Plunker

1 个答案:

答案 0 :(得分:3)

你正在调用JSONP,这意味着返回的json应该是函数中的包装。

例如:

JSON_CALLBACK({"status":"OK"});//this is actually how the server suppose to answer back

所以,我看到您发送callback=JSON_CALLBACK,但服务器没有回复函数调用JSON_CALLBACK

您需要以某种方式强制服务器支持JSONP

如果你去:
http://api.nytimes.com/svc/news/v3/content/all/all/.json?&limit=20&api-key=1f6ef65ff5bb290bdcb01da786c788de:2:67858849&callback=JSON_CALLBACK
你会看到服务器没有响应为JSONP

你可能会破解它,看看这里:
http://jquery-howto.blogspot.co.il/2013/09/jquery-cross-domain-ajax-request.html