确定$ .ajax错误是否超时

我正在利用jQuery.ajax( settings )的魔力。

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

我知道这基本上是为了指定请求的本地时间,但是如果达到超时,它可以触发任何事情吗? 还是只是停止听回应?

阅读jQuery网站,我可以看到没有任何parameter passing,所以它看起来像一个简单的设置function。 这很好。

但是,如果达到超时,我想触发警报或某个function。 在这种情况下,我可以看到错误设置没有被触发。

这是我的片段:

 $("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); } }); }); 

有没有人知道如何超时工作?

如果错误事件处理程序在超时发生时接受三个参数(xmlhttprequest,textstatus和message),则状态arg将为“超时”。

根据jQuery文档 :

第二个参数(除了null)的可能值是“超时”,“错误”,“未修改”和“parsing错误”。

那么你可以相应地处理你的错误。

我创造了这个演示这个小提琴 。

 $.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,你可以testingajax调用 – 它会等待2秒钟,然后才能响应。 我把超时设置设置为1秒,所以应该错误并将“超时”的textstatus传回给error handling程序。

希望这可以帮助!