我正在利用的魔力jQuery.ajax( settings )。
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); } }); });
有谁知道如何超时工作?
如果您的错误事件处理程序在发生超时时采用三个参数(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秒,因此它应该出错,并将’timeout’的文本状态传递回错误处理程序。
希望这可以帮助!