1

可能重复:
jquery $.ajax 超时设置

超时有效,但是当超时发生时,我想执行一个函数。你有什么想法吗?

$.ajax({
    type: "GET", 
    url: "xajax.php", 
    timeout: 100, 
    data: "name=John&location=Boston", 
    success: function(msg) {
        alert( "Data Saved: " + msg );
    }
});
4

3 回答 3

4

超时将作为错误的一部分抛出,您可以检查错误原因是否超时并在那里调用您的函数!

错误处理程序的三个参数是 xmlhttprequest、textstatus 和 message。发生超时时,状态 arg 将为“超时”。

$.ajax({
    type: "GET", 
    url: "xajax.php", 
    timeout: 100, 
    data: "name=John&location=Boston", 
    success: function(msg){ alert( "Data Saved: " + msg ); }
    error: function(xmlhttprequest, textstatus, message) {
        if(textstatus==="timeout") {
            alert("Timeout happened"); //run function here!
        } else {
            alert(textstatus);
        }
    }
});​

可能的值为textstatus(忽略空值)“超时”、“错误”、“未修改”和“解析错误”。

相关文档位于http://api.jquery.com/jQuery.ajax/

于 2012-10-22T10:59:18.843 回答
0

使用完整:

请求完成时要调用的函数(在执行成功和错误回调之后)。该函数传递了两个参数:jqXHR(在 jQuery 1.4.x 中,XMLHTTPRequest)对象和一个对请求状态进行分类的字符串(“success”、“notmodified”、“error”、“timeout”、“abort”或“解析器错误”)。从 jQuery 1.5 开始,完整的设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。

或错误:

请求失败时调用的函数。该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象,一个描述发生的错误类型的字符串和一个可选的异常对象(如果发生)。第二个参数的可能值(除了 null)是“timeout”、“error”、“abort”和“parsererror”。发生 HTTP 错误时,errorThrown 会接收 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。从 jQuery 1.5 开始,错误设置可以接受一个函数数组。每个函数都会被依次调用。注意:跨域脚本和 JSONP 请求不调用此处理程序。这是一个 Ajax 事件。

这是一个使用完整的示例:

    $.ajax({ 
    type: "GET", 
    url: "xajax.php", 
    timeout: 100, 
    data: "name=John&location=Boston", 
    success: function(msg){ alert( "Data Saved: " + msg ); },
    complete: function(jqXHR, textStatus) { 
        if (textStatus == "timeout") {
           alert('timeout');
        }
    }
    });
于 2012-10-22T10:59:33.887 回答
0

看看完整的功能

http://api.jquery.com/jQuery.ajax/

complete(jqXHR, textStatus) 请求完成时调用的函数(在执行成功和错误回调之后)。该函数获得两个参数:jqXHR(在 jQuery 1.4.x 中,XMLHTTPRequest)对象和一个对请求状态进行分类的字符串(“成功”、“未修改”、“错误”、“超时”、“中止”或“解析器错误”)。从 jQuery 1.5 开始,完整的设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。

$.ajax({ 
   type: "GET", 
   url: "xajax.php", 
   timeout: 100, 
   data: "name=John&location=Boston",
   success: function(msg){ alert( "Data Saved: " + msg ); }, 
   complete: function(jqXHR, textStatus) {
        if (textStatus === "timeout") {
            alert("timeout");
        }
   }
于 2012-10-22T11:00:02.540 回答