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);
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.
My problem is how to print out the result after all getJSON done? With below code it will prints 0. Feel free to suggest any better approaches.
var result = 0;
$.each(urls, function (i, url) {
$.getJSON(url, function (json) {
result += json.field1;
})
});
alert(result);
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
使用 jQuery 1.5 延迟对象:
累积
$.getJSON()
返回的 JQXHR 对象数组,并且只有
$.when
它们都是.done()
:注意:这将按照 AJAX 调用完成的顺序累积
结果
,而不是按照调用的顺序。Using jQuery 1.5 deferred objects:
Accumulate an array of the JQXHR objects returned by
$.getJSON()
and only
$.when
they're all.done()
:NB: this will accumulate
result
in the order that the AJAX calls complete, not in the order they're made.当您立即打印结果时,它不起作用,请记住,连接结果的代码是回调,因此会在警报后触发。
在每次回调时,您必须检查所有回调是否已完成。将alert() 调用替换为您的处理。 :)
It's not working as you are printing the result straight away, remember that the code where you concatenate the result is a callback so will fire after your alert.
On each callback you'll have to check if all have finished. replace the alert() call with your processing. :)