如何在返回任何结果之前中止AJAX请求

时间:2011-12-05 16:59:25

标签: jquery ajax

我的网站上有一项功能可以向服务器发送不同的ajax请求。每个请求的持续时间可能不同(1秒 - 3分钟)。如果需要超过30秒,则需要中止请求。怎么做?

4 个答案:

答案 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或其他类似服务器中)。