Jquery 然后JSON超时并中止
如何将json调用分配给内部的变量j1、j2和j3,在这种安排中何时何地设置超时Jquery 然后JSON超时并中止,jquery,json,Jquery,Json,如何将json调用分配给内部的变量j1、j2和j3,在这种安排中何时何地设置超时 var data={}; var j1,j2,j3; $.when( $.getJSON("site1.com?something",function(site1){ data.site1=site1; }), $.getJSON("site2.com?something",function(site2){ data.site2=site2;
var data={};
var j1,j2,j3;
$.when(
$.getJSON("site1.com?something",function(site1){
data.site1=site1;
}),
$.getJSON("site2.com?something",function(site2){
data.site2=site2;
}),
$.getJSON("site3.com?something",function(site3){
data.site3=site3;
})
).then(function(){
console.dir(data);
});
这将是有用的,因为有时如果说站点2没有响应,但站点1和站点3没有响应。。。在目前的安排下,将永远不会被解雇
如何将json调用分配给when中的变量j1、j2和j3
您只需将每个$.getJSON
的结果完全按照所写的方式分配给变量:
j1.abort();
在这种安排中,我将在哪里设置超时
var data={};
var j1,j2,j3;
$.when(
$.getJSON("site1.com?something",function(site1){
data.site1=site1;
}),
$.getJSON("site2.com?something",function(site2){
data.site2=site2;
}),
$.getJSON("site3.com?something",function(site3){
data.site3=site3;
})
).then(function(){
console.dir(data);
});
如果您询问如何更改默认超时,可以使用和timeout
选项设置它,该选项接受以毫秒为单位的超时。您不必担心超时和对任何请求调用.abort
,这将自动发生
$.when(
j1 = $.getJSON("site1.com?something", function(site1) {
data.site1 = site1;
}),
j2 = $.getJSON("site2.com?something", function(site2) {
data.site2 = site2;
}),
j3 = $.getJSON("site3.com?something", function(site3) {
data.site3 = site3;
})
).then(function(){
console.dir(data);
});
最后,您似乎希望调用回调,即使其中一个请求超时。这被视为失败,因此不会调用成功回调。您需要将失败回调传递给
,然后作为第二个参数传递给:
$.ajaxSetup({
timeout: 3000 // 3 seconds
});
哇,我甚至不知道Ajax设置,然后错误是聪明的。我会试试这个,然后再打给你。(与此同时,我打了一个最不可靠的电话,然后把它放在里面)。