Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/432.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/81.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
Javascript 设置ajax超时(jQuery)_Javascript_Jquery_Html_Css_Ajax - Fatal编程技术网

Javascript 设置ajax超时(jQuery)

Javascript 设置ajax超时(jQuery),javascript,jquery,html,css,ajax,Javascript,Jquery,Html,Css,Ajax,有时success功能工作正常,有时不正常 如何设置此ajax请求的超时?例如,3秒,如果超时,则显示错误 问题是,ajax请求将冻结块,直到完成。若服务器停机一段时间,它将永远不会结束。下面的一些示例演示了在jQuery的新旧范例中设置和检测超时 承诺jQuery 1.8+ $.ajax({ url: "test.html", error: function(){ //do something }, success: function(){

有时
success
功能工作正常,有时不正常

如何设置此ajax请求的超时?例如,3秒,如果超时,则显示错误


问题是,ajax请求将冻结块,直到完成。若服务器停机一段时间,它将永远不会结束。

下面的一些示例演示了在jQuery的新旧范例中设置和检测超时

承诺jQuery 1.8+

$.ajax({
    url: "test.html",
    error: function(){
        //do something
    },
    success: function(){
        //do something
    }
});
Promise.resolve(
  $.ajax({
    url: '/getData',
    timeout:3000 //3 second timeout
  })
).then(function(){
  //do something
}).catch(function(e) {
  if(e.statusText == 'timeout')
  {     
    alert('Native Promise: Failed from timeout'); 
    //do something. Try again perhaps?
  }
});
jQuery 1.8+

$.ajax({
    url: "test.html",
    error: function(){
        //do something
    },
    success: function(){
        //do something
    }
});
Promise.resolve(
  $.ajax({
    url: '/getData',
    timeout:3000 //3 second timeout
  })
).then(function(){
  //do something
}).catch(function(e) {
  if(e.statusText == 'timeout')
  {     
    alert('Native Promise: Failed from timeout'); 
    //do something. Try again perhaps?
  }
});

jQuery您可以在ajax选项中使用
timeout
设置,如下所示:

$.ajax({
    url: '/getData',
    error: function(jqXHR, textStatus){
        if(textStatus === 'timeout')
        {     
             alert('Failed from timeout');         
            //do something. Try again perhaps?
        }
    },
    success: function(){
        //do something
    },
    timeout:3000 //3 second timeout
});
在此处阅读有关ajax选项的所有内容:


请记住,当超时发生时,将触发
错误处理程序,而不是
成功处理程序:)

请阅读
$。ajax
,这是一个涵盖的主题

$.ajax({
    url: "test.html",
    timeout: 3000,
    error: function(){
        //do something
    },
    success: function(){
        //do something
    }
});

通过访问
error:function(jqXHR,textStatus,errorshown)
选项的textStatus参数,可以查看抛出的错误类型。选项有“超时”、“错误”、“中止”和“解析器错误”。

使用功能齐全的
.ajax
jQuery函数。 例如,与比较

无需测试,只需将代码与引用的SO问题合并即可:

$.ajax({
    url: "test.html",
    error: function(){
        // will fire when timeout is reached
    },
    success: function(){
        //do something
    },
    timeout: 3000 // sets timeout to 3 seconds
});

如果您的请求通过NginX,也不要忘记检查NginX设置

Ajax
options.timeout
是一回事,但nginx请求超时可能也需要调整


请看

你需要一个
}
之后。看看这个>H-Bahrami和Rudolf Mühlbauer可能的副本谢谢你的回复,但我是ajax新手,所以请通过我的代码澄清一下…因为我已经看到了这些答案,但我不知道发生了什么…所以请帮助我…我如何完成。load()?有没有可能?@S.S,试着在load:--的文档中查找timeout:--我的代码中有一个输入错误,已更正。
$.ajax().fail()
$.ajax().error()
?@GarciaWebDev-关于包含jQuery 1.8+,请参见+1。对于类似问题的大多数其他答案只包括关于捕获超时错误的成功/错误。我似乎不太适应,超时:1,确认它已被传递,但决不会超过。请确保用try/catch包装整个$.ajax调用。jQuery不会捕获中止,它将在$.ajax调用之外抛出。