2013-05-14 340 views
20

有没有办法运行一个函数,如果jQuery的$ .ajax函数命中它的timeoutajax超时回调函数

$.ajax({ 
... 
... 
,timeout:1000(){do something if timeout) 
... 

}); 
+2

你想也许什么:http://stackoverflow.com/questions/3543683/jquery-ajax-timeout

而且您现在可以通过返回的JQuery推迟承诺对象的.fail方法Wire你的错误处理程序 - 设置 – Eli 2013-05-14 00:44:58

回答

40
$.ajax({ 
    ... 
    timeout: 1000, 
    error: function(jqXHR, textStatus, errorThrown) { 
     if(textStatus==="timeout") { 
      //do something on timeout 
     } 
    } 
});​ 

有关详细信息检查出jQuery文档:

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


编辑

我最初回答这个问题已经过了一年多了,textStatus可能的值已更改为"success", "notmodified", "error", "timeout", "abort","parsererror"。对于错误回调,只有最后四种状态是可能的。

var promise = $.ajax({ timeout: 1000 }); 

promise.fail(function(jqXHR, textStatus) { 
    if(textStatus==="timeout") { 
     // handle timeout 
    } 
}); 
+4

通常,解释好的答案,而不是仅仅删除一段代码。 – Daedalus 2013-05-14 00:44:37

+13

@达达卢斯在这种情况下,我会说代码是不言自明的。 – Paulpro 2013-05-14 00:45:18

+1

@Paulpro我不同意。它没有解释传递给错误函数的内容,除了有时等于'超时'的字符串。 – Daedalus 2013-05-14 00:45:46