我正在利用魔法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),则状态参数将为“timeout”。
Per the jQuery 文档 http://api.jquery.com/jQuery.ajax/:
第二个的可能值
参数(除了空)是“超时”,
“错误”、“未修改”和
“解析器错误”。
然后您可以相应地处理您的错误。
我创建了这个fiddle http://jsfiddle.net/u3f9C/这证明了这一点。
$.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 秒,因此它应该会出错并将“超时”文本状态传递回错误处理程序。
希望这可以帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)