the*_*ega 6 javascript ajax jquery json
我正在尝试使用HTML中的JQuery完成以下操作序列.
我构建了下面发布的Java脚本代码.它完美地工作,除非其中一个请求由于404错误而失败:然后,$.when不运行,因为它在请求失败时立即中止.你能以某种方式覆盖ajax请求,所以它们不会失败,而是返回一个空源?
我已经阅读了这篇文章和这篇文章,但它没有提供一个解决方案,可以在所有查询完成后运行代码.
function fetchData() {
queries = [];
//urls is initialized somewhere else containing all urls
for(var url in urls) {
queries.push($.getJSON(url));
}
$.when.apply(this, queries).done(function() {
console.log("Finished all queries, got "+arguments.length+" results");
//Now arguments is a array containing the results of all requests
}
//function returns instantly, no problem!
}
Run Code Online (Sandbox Code Playgroud)
我可能会做这样的事情:
$(document).ready(function(){
var _q = ['/echo/json/', '/echo/json/', 'mybadurl'];
var _d = [];
for(u in _q)
{
$.ajax({
url: _q[u],
success: function(data){
pushData(data);
},
error: function(x){
pushData(x);
}
});
}
function pushData(d)
{
_d.push(d);
if(_d.length == _q.length)
{
alert('were done');
}
}
});
Run Code Online (Sandbox Code Playgroud)
在这里,您将成功或错误的数据推送到数组中_d,并进行测试以确保在继续之前已收到所有回复 ( alert('were done');)。
当然,您可以通过将包含操作状态的对象与有效负载一起推送到 中来使此操作变得更智能_d,但这是一个快速的组合,以演示我最有可能如何去做您所要求的事情。