【问题标题】:Aborting All Ajax Calls - jqXHR中止所有 Ajax 调用 - jqXHR
【发布时间】:2012-07-21 11:46:20
【问题描述】:

基本上我使用 jqXHR 和 asmx。如果可能的话,我想这样做;

在每个页面中,我使用同步或异步的 6-7 个 ajax 调用总体上取决于它是哪种方法。但是当其中一个出现错误时,我想在所有 ajax 调用之后中断该 ajax 调用。

已经谢谢了!

【问题讨论】:

    标签: jquery ajax break jqxhr


    【解决方案1】:

    使用一个数组来存储每个 ajax 调用返回的对象,并遍历该数组以中止它们:

    var XHR = []
    ........//later
    var myajax = $.ajax({
        type: 'GET',
        url: url
    }).done(function() {
        //do something
    }).fail(function() {
       abortAll();
    });
    XHR.push(myajax);
    
    function abortAll() {
       XHR.each(function(i,e) {
          e.abort();
       });
    }
    

    【讨论】:

    • 我收到了 11 个 ajax 调用,这在前 8 个调用中运行良好,但我在第 9 个调用时遇到错误,想取消其他 2 个调用,这就是没有任何想法的事情? :)
    • 当我在第 9 次收到错误时,还检查了数组的长度为 8。另外 2 个调用异步工作。它们在 9 号完成或出错时触发。
    • link 这是我所有的 ajax 调用,你可以看到我得到了错误,这就是我想要的,但其他 2 个刚刚在第 8 个完成或出错时触发:(跨度>
    【解决方案2】:

    每次创建 ajax 请求时它都会返回一个对象,您可以使用它来中止请求:

    var request = $.ajax({
        type: 'POST',
        url: url,
        success: function(data){}
    });
    

    然后使用请求中止调用:

    request.abort();
    

    【讨论】:

    • 也可以使用数组var request=[] 然后.push() 向其中请求并使用for 循环或$.each 中止它们。
    猜你喜欢
    • 2013-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-28
    • 2018-05-28
    • 2016-03-15
    相关资源
    最近更新 更多