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

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

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

【问题讨论】:

    标签: javascript jquery ajax cancellation


    【解决方案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()
    

    【讨论】:

      猜你喜欢
      • 2011-12-22
      • 2022-10-24
      • 2011-05-31
      • 1970-01-01
      • 1970-01-01
      • 2012-01-10
      • 2019-08-08
      • 1970-01-01
      • 2016-11-14
      相关资源
      最近更新 更多