亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何知道所有ajax調用何時完成

如何知道所有ajax調用何時完成

泛舟湖上清波郎朗 2019-12-25 14:37:40
我有一個帶有行的表格樣式頁面。每行都有一個復選框。我可以選中所有/很多復選框,然后單擊“提交”,這是對每一行的Jquery ajax調用?;旧希覍γ恳恍卸加幸粋€表單,并且遍歷所有選中的行,然后提交執行jquery ajax調用的表單。所以我有一個按鈕,它可以:       $("input:checked").parent("form").submit();然后每一行都有:            <form name="MyForm<%=i%>" action="javascript:processRow(<%=i%>)" method="post" style="margin:0px;">                <input type="checkbox" name="X" value="XChecked"/>                <input type="hidden" id="XNumber<%=i%>" name="X<%=i%>" value="<%=XNumber%>"/>                <input type="hidden" id="XId<%=i%>" name="XId<%=i%>" value="<%=XNumber%>"/>                <input type="hidden" id="XAmt<%=i%>" name="XAmt<%=i%>" value="<%=XAmount%>"/>                <input type="hidden" name="X" value="rXChecked"/>            </form>該表格提交給processRow:   function processRow(rowNum)   {        var Amount = $('#XAmt'+rowNum).val();        var XId = $('#XId'+rowNum).val();        var XNum = $('#OrderNumber'+rowNum).val();        var queryString = "xAmt=" + "1.00" + "&xNumber=" + OrdNum + "&xId=" + xId;        $('#coda_'+rowNum).removeClass("loader");        $('#coda_'+rowNum).addClass("loading");        $.ajax({          url: "x.asp",          cache: false,          type:  "POST",          data:  queryString,          success: function(html){            $('#result_'+rowNum).empty().append(html);            $('#coda_'+rowNum).removeClass("loading");            $('#coda_'+rowNum).addClass("loader");          }        });   }我想知道的是,通過這種方法,我可以判斷出我所有的Ajax調用是否都已完成。原因是要在所有這些調用發生時啟用/禁用提交按鈕。謝謝,請注意,由于應用程序的敏感性,我不得不修改變量名,因此許多變量名可能重復。
查看完整描述

3 回答

?
尚方寶劍之說

TA貢獻1788條經驗 獲得超4個贊

簡單的方法

最簡單的方法是使用.ajaxStop()事件處理程序:


$(document).ajaxStop(function() {

  // place code to be executed on completion of last outstanding ajax call here

});

艱難的道路

您還可以手動檢測是否有任何ajax調用仍處于活動狀態:


創建一個包含活動Ajax連接數的變量:


var activeAjaxConnections = 0;

在打開新的Ajax連接之前,遞增該變量


$.ajax({

  beforeSend: function(xhr) {

    activeAjaxConnections++;

  },

  url (...)

在success部分檢查,如果該變量等于零(如果是的話,最后的連接已完成)


success: function(html){

  activeAjaxConnections--;

  $('#result_'+rowNum).empty().append(html);

  $('#coda_'+rowNum).removeClass("loading");

  $('#coda_'+rowNum).addClass("loader");

  if (0 == activeAjaxConnections) {

    // this was the last Ajax connection, do the thing

  }

},

error: function(xhr, errDesc, exception) {

  activeAjaxConnections--;

  if (0 == activeAjaxConnections) {

    // this was the last Ajax connection, do the thing

  }

}

如您所見,我還添加了檢查返回錯誤的信息


查看完整回答
反對 回復 2019-12-25
  • 3 回答
  • 0 關注
  • 637 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號