下面是一些示例,演示如何在jQuery的新舊範例中設置和檢測超時。
Live Demo
承諾與jQuery 1.8+
Promise.resolve(
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
})
).then(function(){
//do something
}).catch(function(e) {
if(e.statusText == 'timeout')
{
alert('Native Promise: Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery的1.8+
$.ajax({
url: '/getData',
timeout:3000 //3 second timeout
}).done(function(){
//do something
}).fail(function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
});
jQuery的< = 1.7.2
$.ajax({
url: '/getData',
error: function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
//do something. Try again perhaps?
}
},
success: function(){
//do something
},
timeout:3000 //3 second timeout
});
注意,textStatus參數(或jqXHR.statusText)將讓你知道是什麼錯誤。如果您想知道失敗是由超時引起的,這可能很有用。
誤差(jqXHR,textStatus,errorThrown)
一個函數,如果 請求失敗被調用。該函數接收三個參數:jqXHR( jQuery 1.4.x,XMLHttpRequest)對象,描述發生的 錯誤類型的字符串以及可選的異常對象(如果發生)。 第二個參數(除了null)的可能值是「超時」, 「錯誤」,「中止」和「parsererror」。發生HTTP錯誤時, errorThrown收到HTTP狀態的文本部分,例如 「未找到」或「內部服務器錯誤」。從jQuery 1.5開始,錯誤 設置可以接受一組函數。每個函數依次被稱爲 。注意:此處理程序不針對跨域腳本和JSONP請求調用。
源:http://api.jquery.com/jQuery.ajax/
你需要一個','那裏後'}'。 – pimvdb
看看這個> http://stackoverflow.com/questions/12930759/how-to-call-a-jquery-function-onload-with-some-delay/12930892#12930892 –
可能重複[jQuery $ .ajax超時設置](http://stackoverflow.com/questions/3543683/jquery-ajax-timeout-setting) – nathanchere