$.getJSON
发出多个调用在概念上没有任何问题。虽然,正如 Amith George 在对原始问题的评论中提到的那样,如果您超出允许的速率限制,您可能会收到 403 回复。(Twitter 使用此响应代码;我不确定 ESPN 是否使用。)
对我来说,当这些 JSON 调用是托管在域(例如 jsfiddle.net)中的 HTML 文件的一部分时,我会将两个对象记录到控制台(请参阅http://jsfiddle.net/pGBmT/)。这使用 jquery 1.7.2。
如果我在 HTML 文件中尝试旧版本的 jquery (1.3),我会收到您注意到的错误。
但是,当我使用 jquery 1.7.2 时,它在本地也可以正常工作(尽管其他人报告了偶尔的问题)。这是我在本地尝试的文件:
<!doctype html>
<html>
<head><meta charset="utf-8"><title>Test</title></head>
<body>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$.getJSON('http://api.espn.com/v1/sports/basketball/nba/teams/16/news?apikey=62t2h4tsdmhr2q7aynvjuv2s', function(data) {
console.log(data.headlines);
});
$.getJSON('http://api.espn.com/v1/sports/football/nfl/teams/16/news?apikey=62t2h4tsdmhr2q7aynvjuv2s', function(data) {
console.log(data.headlines);
});
</script>
</body>
</html>
您可以尝试连续多次重新加载。大多数时候我认为没有问题,但偶尔会收到 403。通常我会得到一个成功的响应,第二个是原始错误。
我最好的猜测是速率限制问题。尝试将其中一个呼叫setTimeout
延迟 3 或 4 秒。当我尝试这个时:
<!doctype html>
<html>
<head><meta charset="utf-8"><title>Test</title></head>
<body>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script>
$.getJSON('http://api.espn.com/v1/sports/basketball/nba/teams/16/news?apikey=62t2h4tsdmhr2q7aynvjuv2s', function(data) {
console.log(data.headlines);
});
setTimeout(function () {$.getJSON('http://api.espn.com/v1/sports/football/nfl/teams/16/news?apikey=62t2h4tsdmhr2q7aynvjuv2s', function(data) {
console.log(data.headlines);
})}, 4000);
</script>
它连续工作了5次,没有任何问题!