jQuery多个getJSON请求

我的脚本需要在https://graph.facebook.com/xxxx上获取几个json文件,并从每个json中检索某个字段,然后计算求和。

我的问题是如何在所有getJSON完成后打印出结果? 使用以下代码,它将打印0.随意建议任何更好的方法。

var result = 0; $.each(urls, function (i, url) { $.getJSON(url, function (json) { result += json.field1; }) }); alert(result); 

使用jQuery 1.5延迟对象:

累积$.getJSON()返回的JQXHR对象数组

 var jxhr = urls.map(function(url) { return $.getJSON(url, function(json) { result += json.field1; }) }); 

并且只有$.when他们全部.done()

 $.when.apply($, jxhr).done(function() { alert(result); }); 

注意:这将按照AJAX调用完成的顺序累积result ,而不是按照它们的顺序。

它不会立即打印结果,请记住,连接结果的代码是回调,因此会在警报后触发。

在每次回调时,您都必须检查是否所有回复都已完成。 用您的处理替换alert()调用。 🙂

  var result = 0; var doneCount = 0; $.each(urls, function (i, url) { $.getJSON(url, function (json) { doneCount++; result += json.field1; if (doneCount == urls.length) { alert(result); } }) });