Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 然后JSON超时并中止_Jquery_Json - Fatal编程技术网

Jquery 然后JSON超时并中止

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;

如何将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;
        }),
    $.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设置,然后错误是聪明的。我会试试这个,然后再打给你。(与此同时,我打了一个最不可靠的电话,然后把它放在里面)。