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