我无法让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
答案 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