使用jQuery中止Ajax请求
使用jQuery,我如何取消/中止我还没有收到响应的Ajax请求 ?
大多数jQuery Ajax方法返回一个XMLHttpRequest(或等效的)对象,所以你可以使用abort()
。
请参阅文档:
var xhr = $.ajax({
type: "POST",
url: "some.php",
data: "name=John&location=Boston",
success: function(msg){
alert( "Data Saved: " + msg );
}
});
//kill the request
xhr.abort()
更新:从jQuery 1.5开始,返回的对象是一个名为jqXHR的原生XMLHttpRequest对象的包装器。 这个对象似乎公开了所有的本地属性和方法,所以上面的例子仍然有效。 请参阅jqXHR对象(jQuery API文档)。
更新2:从jQuery 3开始,ajax方法现在返回带有额外方法(如中止)的promise,所以上面的代码仍然有效,尽管返回的对象不再是xhr
。 在这里查看3.0博客。
您无法记起请求,但可以设置一个超时值,之后响应将被忽略。 看到这个页面的jQuery AJAX选项。 我相信如果超时超时,你的错误回调将被调用。 每个AJAX请求都有一个默认的超时时间。
您也可以在请求对象上使用abort()方法,但是,虽然它会导致客户端停止监听事件,但它可能不会阻止服务器处理它。
这是一个异步请求,意思是一旦它被发送出去。
如果您的服务器由于AJAX请求而开始非常昂贵的操作,那么您可以做的最好的方法是打开您的服务器以侦听取消请求,并发送单独的AJAX请求,通知服务器停止正在进行的操作。
否则,只需忽略AJAX响应。
链接地址: http://www.djcxy.com/p/12435.html