以下是一些示例,演示了在jQuery的旧和新范例中设置和检测超时。
在线演示
使用jQuery 1.8+的Promise
Promise.resolve(
$.ajax({
url: '/getData',
timeout:3000
})
).then(function(){
}).catch(function(e) {
if(e.statusText == 'timeout')
{
alert('Native Promise: Failed from timeout');
}
});
jQuery 1.8+
$.ajax({
url: '/getData',
timeout:3000
}).done(function(){
}).fail(function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
}
});
jQuery <= 1.7.2
$.ajax({
url: '/getData',
error: function(jqXHR, textStatus){
if(textStatus === 'timeout')
{
alert('Failed from timeout');
}
},
success: function(){
},
timeout:3000
});
注意,参数
textStatus(或
jqXHR.statusText)将告诉您发生了什么错误。如果您想知道失败是由超时引起的,这可能很有用。
error(jqXHR, textStatus, errorThrown)
如果请求失败,将调用此函数。该函数接收三个参数:jqXHR(在jQuery 1.4.x中是XMLHttpRequest)对象,描述发生的错误类型的字符串以及可选的异常对象(如果有)。除了null之外,第二个参数的可能值为“timeout”、“error”、“abort”和“parsererror”。当发生HTTP错误时,errorThrown接收HTTP状态的文本部分,例如“Not Found”或“Internal Server Error”。自jQuery 1.5以来,error设置可以接受一组函数。每个函数都将依次调用。注意:此处理程序不适用于跨域脚本和JSONP请求。
来源:http://api.jquery.com/jQuery.ajax/
}
后面需要加上一个,
。 - pimvdb