如何取消 Ajax 请求? [复制]

Posted

技术标签:

【中文标题】如何取消 Ajax 请求? [复制]【英文标题】:how can I cancel an Ajax request? [duplicate] 【发布时间】:2014-06-15 07:25:05 【问题描述】:

在phonegap中如何取消程序中的ajax请求,我想设置取消按钮来控制请求太慢

$.ajax(
    type: "GET",
    url: url,
    success: function(m) 
        alert( "success");
    
);

【问题讨论】:

【参考方案1】:

将 ajax 请求返回的 promise 接口存储在 global variableabort 在取消点击时

var result = $.ajax(  type: "GET",  url: url,  success: function(m)      alert( "success");   );


$('#cancel').click(function() 
    result.abort();
);

【讨论】:

你能详细说明一下吗? 您可以将结果存储在global 变量和abort 按钮调用上的请求中 你没有存储结果,你存储的是返回的延迟承诺,它暴露了具有 abort 方法的原生 XMLHttpRequest。 @adeneo 感谢您的纠正。【参考方案2】:
var request= $.ajax(  type: "GET",  url: url,  success: function(m)      alert( "success");   );


$('#cancel').click(function() 
    request.abort();
);

这将中止来自客户端(浏览器)的请求,但请注意:如果服务器已经收到请求,它可能会继续处理请求(取决于服务器的平台),即使浏览器不再监听回应。没有可靠的方法可以让 Web 服务器停止处理正在进行的请求。

【讨论】:

等等,这与已经发布的答案有何不同???编辑:你关于服务器不处理它的话是有趣的想法 我刚刚解释过了。仅此而已。 OP 应该知道实际会发生什么,而不仅仅是如何实现。 是的,编辑了我之前的评论,我非常同意! 我没有提到那种话....:)【参考方案3】:

你好,它类似于Abort Ajax requests using jQuery,无论如何这可以帮助你

 var ab = $.ajax(  type: "GET",  url: url,  success: function(m)      alert( "success");   );

//kill the request
ab.abort()

【讨论】:

以上是关于如何取消 Ajax 请求? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在 ASP.NET MVC 中进行长轮询 AJAX 请求? [复制]

如何取消/中止 jQuery AJAX 请求?

取消对象内的 ajax 请求

如何取消使用 Dajaxice 进行的 Ajax 调用?

如何防止 AJAX 请求排队? [复制]

如何在 AJAX 中形成授权 CURL 请求? [复制]