使用jQuery取消Ajax请求

34 浏览
0 Comments

使用jQuery取消Ajax请求

使用jQuery,我是否可以取消/中止尚未接收响应的Ajax请求?

admin 更改状态以发布 2023年5月23日
0
0 Comments

你无法回收请求,但你可以设定一个超时值,超过该值后,响应将被忽略。请查看这个页面,了解jQuery AJAX选项。我认为如果超过时间限制,错误回调将被调用。每一个AJAX请求已经有了默认的超时时间。

你也可以使用请求对象上的abort()方法,但是,虽然它会让客户端停止监听事件,可能很可能无法使服务器停止处理它。

0
0 Comments

大多数的jQuery Ajax方法返回一个XMLHttpRequest(或等同对象),所以你可以使用abort()

请查看文档:

  • abort方法MSDN)。 取消当前的HTTP请求。
  • abort()MDN)。如果请求已经被发送,则此方法将终止请求。

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方法现在返回一个带有额外方法(如abort)的promise,所以上述代码仍然适用,虽然返回的对象不再是xhr。请查看此处的3.0博客

更新3:xhr.abort()在jQuery 3.x上仍然有效。不要认为更新2是正确的。请参见jQuery GitHub存储库上的更多信息

0