我的网站上有一项功能可以向服务器发送不同的ajax请求。每个请求的持续时间可能不同(1秒 - 3分钟)。如果需要超过30秒,则需要中止请求。怎么做?
答案 0 :(得分:4)
您可以在$ .ajax方法中设置超时,如http://api.jquery.com/jQuery.ajax/
中所述例如,以下请求将在1分钟内超时
$.ajax({
url: "test.html",
context: document.body,
timeout: 60000,
success: function(){
$(this).addClass("done");
},
complete : function(xhr,status) {
if(status == "timeout"){
}
}
});
您可以编写完整的回调以检查是否发生超时
答案 1 :(得分:2)
var x = $.ajax(...);
setTimeout(function(){
x.abort(); //cancel
}, 30000); // 30 seconds
答案 2 :(得分:1)
您可以使用timeout
$.ajax({
timeout:30000,
//rest of params here
});
在这里工作http://jsfiddle.net/ZkgSB/
别的东西一定是错的
答案 3 :(得分:0)
有一刻你需要注意。所有实现都很好,它们可以在真实服务器上工作,但它们不适用于本地服务器(例如在Denwer或其他类似服务器中)。