确定$.ajax错误是否为超时

确定$.ajax错误是否为超时

我在利用jQuery.ajax( settings ).

但是,我想知道是否有人玩过超时设置?

我知道它基本上是用来指示请求的本地时间,但是如果达到超时,它能触发什么吗?还是干脆就不听回应了?

阅读jQuery站点,我可以看到没有传递任何参数,因此它似乎是一个具有一种功能的简单设置。这很好。

但是,如果到达超时,我希望触发警报或函数。在这种情况下,我可以看到错误设置不会被触发。

这是我的片段:

$("form#testform").submit(function(){ 

 var allFormValues = $("form#testform").serialize(); 

   $.ajax({
    cache:false,
    timeout:8000,  // I chose 8 secs for kicks
    type:"POST",
    url:"someurl.php",
    data:allFormValues,
    error:function(){ alert("some error occurred") },
    success:function(response){ alert(response); }
   });});

有人知道如何在超时的情况下工作吗?


慕容3067478
浏览 783回答 2
2回答

慕斯王

如果您的错误事件处理程序在超时使用三个参数(XMLHttpRequest、textStatus和Message),则状态Arg将是“超时值”。根据jQuery文档:第二个参数的可能值(除了NULL)是“超时值”、“错误”、“未修改”和“ParserError”。那么,您可以相应地处理您的错误。我创造了这个小提琴这说明了这一点。$.ajax({     url: "/ajax_json_echo/",     type: "GET",     dataType: "json",     timeout: 1000,     success: function(response) { alert(response); },     error: function(xmlhttprequest, textstatus, message) {         if(textstatus==="timeout") {             alert("got timeout");         } else {             alert(textstatus);         }     }});使用jsFiddle,您可以测试Ajax调用-它需要等待2秒才能响应。我将超时设置为1秒,因此它应该会出错,并将文本状态‘超时值’传回给错误处理程序。希望这能帮上忙!

心有法竹

(X)mlHttpRequest、(T)extStatus和(M)essage
打开App,查看更多内容
随时随地看视频慕课网APP