这里有一些示例演示了在 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
$.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)是“超时”,
“错误”、“中止”和“解析器错误”。发生 HTTP 错误时,
errorThrown 接收 HTTP 状态的文本部分,例如
“未找到”或“内部服务器错误”。从 jQuery 1.5 开始,错误
setting 可以接受一个函数数组。每个函数都会被调用
反过来。注意:跨域脚本不调用此处理程序,并且
JSONP 请求。
src:http://api.jquery.com/jQuery.ajax/