我正在利用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); }
});
});
有人知道如何使用超时工作吗?
答案 0 :(得分:342)
如果错误事件处理程序在发生超时时接受三个参数(xmlhttprequest,textstatus和message),则状态arg将为“timeout”。
第二个可能的值 参数(除了null)是“超时”, “错误”,“未修改”和 “parsererror”。
您可以相应地处理错误。
我创建了这个fiddle来证明这一点。
$.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秒,因此它应该出错并将“超时”的textstatus传回错误处理程序。
希望这有帮助!