下面是一些示例,用于演示在 jQuery 的旧范例和新范例中设置和检测超时。
Live Demo
Promise with 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
});
请注意,文本Status param(或jqXHR.statusText)将让您知道错误是什么。如果您想知道故障是由超时引起的,这可能很有用。
error(jqXHR, textStatus, errorThrown)
请求失败时要调用的函数。该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest 中)对象、描述所发生错误类型的字符串和可选异常对象(如果发生)。第二个参数(null 除外)的可能值为“超时”、“错误”、“中止”和“解析器”。发生 HTTP 错误时,errorThrown 会收到 HTTP 状态的文本部分,如“未找到”或“内部服务器错误”。从 jQuery 1.5 开始,错误设置可以接受函数数组。将依次调用每个函数。注意:跨域脚本和 JSONP 请求不调用此处理程序。
来源: http://api.jquery.com/jQuery.ajax/