我利用了jQuery的魔力。Ajax(设置)。

然而,我想知道是否有人经常使用暂停设置?

我知道它主要用于为请求指定本地时间,但如果达到超时,它能触发什么吗?或者它只是停止倾听回应?

阅读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'。

根据jQuery文档:

第二个可能的值 参数(除null外)为"timeout", "error", "notmodified"和 “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”的textstatus传递回错误处理程序。

希望这能有所帮助!