[英]jQuery Multiple getJSON requests
My script needs to fetch several json files on https://graph.facebook.com/xxxx , and retrieve a certain field from each json, then calculate summation.
我的問題是完成所有 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);
}
})
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.