下面是一些示例,演示如何在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