可能重复:
jquery $.ajax 超时设置
超时有效,但是当超时发生时,我想执行一个函数。你有什么想法吗?
$.ajax({
type: "GET",
url: "xajax.php",
timeout: 100,
data: "name=John&location=Boston",
success: function(msg) {
alert( "Data Saved: " + msg );
}
});
可能重复:
jquery $.ajax 超时设置
超时有效,但是当超时发生时,我想执行一个函数。你有什么想法吗?
$.ajax({
type: "GET",
url: "xajax.php",
timeout: 100,
data: "name=John&location=Boston",
success: function(msg) {
alert( "Data Saved: " + msg );
}
});
超时将作为错误的一部分抛出,您可以检查错误原因是否超时并在那里调用您的函数!
错误处理程序的三个参数是 xmlhttprequest、textstatus 和 message。发生超时时,状态 arg 将为“超时”。
$.ajax({
type: "GET",
url: "xajax.php",
timeout: 100,
data: "name=John&location=Boston",
success: function(msg){ alert( "Data Saved: " + msg ); }
error: function(xmlhttprequest, textstatus, message) {
if(textstatus==="timeout") {
alert("Timeout happened"); //run function here!
} else {
alert(textstatus);
}
}
});
可能的值为textstatus
(忽略空值)“超时”、“错误”、“未修改”和“解析错误”。
使用完整:
请求完成时要调用的函数(在执行成功和错误回调之后)。该函数传递了两个参数:jqXHR(在 jQuery 1.4.x 中,XMLHTTPRequest)对象和一个对请求状态进行分类的字符串(“success”、“notmodified”、“error”、“timeout”、“abort”或“解析器错误”)。从 jQuery 1.5 开始,完整的设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。
或错误:
请求失败时调用的函数。该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象,一个描述发生的错误类型的字符串和一个可选的异常对象(如果发生)。第二个参数的可能值(除了 null)是“timeout”、“error”、“abort”和“parsererror”。发生 HTTP 错误时,errorThrown 会接收 HTTP 状态的文本部分,例如“未找到”或“内部服务器错误”。从 jQuery 1.5 开始,错误设置可以接受一个函数数组。每个函数都会被依次调用。注意:跨域脚本和 JSONP 请求不调用此处理程序。这是一个 Ajax 事件。
这是一个使用完整的示例:
$.ajax({
type: "GET",
url: "xajax.php",
timeout: 100,
data: "name=John&location=Boston",
success: function(msg){ alert( "Data Saved: " + msg ); },
complete: function(jqXHR, textStatus) {
if (textStatus == "timeout") {
alert('timeout');
}
}
});
看看完整的功能
http://api.jquery.com/jQuery.ajax/
complete(jqXHR, textStatus) 请求完成时调用的函数(在执行成功和错误回调之后)。该函数获得两个参数:jqXHR(在 jQuery 1.4.x 中,XMLHTTPRequest)对象和一个对请求状态进行分类的字符串(“成功”、“未修改”、“错误”、“超时”、“中止”或“解析器错误”)。从 jQuery 1.5 开始,完整的设置可以接受一个函数数组。每个函数都会被依次调用。这是一个 Ajax 事件。
$.ajax({
type: "GET",
url: "xajax.php",
timeout: 100,
data: "name=John&location=Boston",
success: function(msg){ alert( "Data Saved: " + msg ); },
complete: function(jqXHR, textStatus) {
if (textStatus === "timeout") {
alert("timeout");
}
}