有没有办法调用一个函数,例如,一个插入加载GIF的函数,如果一个ajax请求花了超过指定的时间长度?如果请求在该时间结束之前完成,也不应该调用它。
我在考虑使用setTimeout
500ms然后在成功回调中销毁它,这意味着如果在500ms结束之前它被销毁,它可能无法运行。
编辑:我不希望请求在此500ms后失败。它应该继续运行。
答案 0 :(得分:3)
要在500ms后执行该功能并保持请求处于活动状态,请使用setTimeout()
$.ajax({
url: "hodor.html",
error: function () {
clearTimeout(timeoutID);
},
success: function () {
clearTimeout(timeoutID);
}
});
var timeoutID = setTimeout(function () {
console.log("The timeout passed");
}, 500);
使用内置timeout处理的ajax。以ms为单位设置timeout
并设置error
回调函数。使用t
确定回调中的超时:
$.ajax({
url: "hodor.html",
timeout: 500,
error: function(x, t, m) {
if (t === "timeout") {
// Timeout
} else {
}
},
success: function(){
}
});
答案 1 :(得分:-1)
jQuery ajax定义提供了一个名为timeout的属性。如果超时,它将转到您的错误回调,之后它将转到您的完成/完成。你可以看一下。
根据jQuery Spec
设置请求的超时(以毫秒为单位)。这将覆盖使用$ .ajaxSetup()设置的任何全局超时。超时时间从$ .ajax调用点开始;如果其他几个请求正在进行且浏览器没有可用的连接,则请求可能会在发送之前超时。在jQuery 1.4.x及更低版本中,如果请求超时,XMLHttpRequest对象将处于无效状态;访问任何对象成员可能会抛出异常。仅在Firefox 3.0+中,超时无法取消脚本和JSONP请求;即使在超时时间之后到达,脚本也会运行。
http://api.jquery.com/jquery.ajax/
希望这有帮助。
快乐学习:)