簡體   English   中英

jQuery多個AJAX調用

[英]JQuery Multiple AJAX call

請參考下面的代碼,我已經將兩個ajax都設置為async:false。 我發現,當函數調用doUpdate2ndAJAX()時,程序開始執行$(“。search”)。click();。 即使doUpdate2ndAJAX()尚未完成執行。

在當前情況下:1. doUpdate2ndAJAX()執行2. doUpdate2ndAJAX()尚未完成,開始執行$(“。search”)。click()3. doUpdate2ndAJAX()完成執行並返回響應

我可以知道如何做到這一點嗎?1. doUpdate2ndAJAX()執行2. doUpdate2ndAJAX()完成執行並返回響應3.調用$(“。search”)。click();。

[按順序執行]

謝謝。 -fsloke

firstCalled: function() {
             $.ajax({                          
            url: "XXX",
            async: false,
            success: function(response) {

                        doUpdate2ndAJAX();

                        $(".search").click();

                        }
           });
}               

function  doUpdate2ndAJAX(){
              $.ajax({                         
            url: "YYY",
            async: false,
            success: function(response) {
                            // UPDATE SOMETHING
                        }
               });
              return false;
}

使用Deferred對象,這些是操縱異步調用的對象,可以解決:

$.when($.ajax("/page1.php"), $.ajax("/page2.php"))
  .then(myFunc, myFailure);

這樣,myFunc會在執行2個ajax調用后執行,如果其中一個有錯誤,則執行myFailure。

您可以在jquery官方文檔中了解有關它的更多信息: JQuery Deferred Object

您應該使AJAX調用異步,然后調用$(".search").click(); 在第二個請求的success回調中。

根據您的結構,您可能想要向doUpdate2ndAJAX添加參數,該參數告訴它是否調用$(".search").click();
或者,您可以添加一個回調參數。

我建議使用“ complete”回調來調用$(“。search”)。click()。

您可以在此處查看成功和完整回調之間的區別: http : //api.jquery.com/jQuery.ajax/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM