簡體   English   中英

如何檢查多個$ .post已發送並且結果已在頁面上獲取

[英]How to check multiple $.post has been send and result has been fetched on the page

在我的JavaScript代碼中,當有人更改選項並單擊“轉到”時。 它是多個項目的change屬性。 我看到每個項目的保存按鈕和編輯按鈕。

因此,在更改選擇並單擊“轉到”后,我手動單擊了按鈕。

for (var i = 0; i < checked.length; i++) {
        var cur = checked[i];
        $(cur).parents('tr').find('.transaction-category-wrapper .select2').val(catId);
        $(cur).parents('tr').find('.transaction-verify-wrapper .btn-save').click();
    }

現在的問題是我想刷新頁面,但是在確保響應已到達頁面之后。 我如何實現它。

我正在考慮實現setTimeout,但是如果服務器未執行並且超時只是刷新頁面,那將不是一個好的選擇。

jQuery是否具有某些屬性,可以讓我知道javascript請求已完成並且已收到響應。

$(document).on('click', '.btn-save', function () {
                 // val logic

                $.post("/Entries/AddEntries", val, function (r) {
                    enableTooltip();
                });
            });

您可以使用.then來處理AJAX請求的成功和失敗案例:

$.post("your_url", { ... })
  .then(function() {
    // If succeeded
  }, function() {
    // If failed
  });

.post返回一個jQuery deferred對象,可以使用.then()處理函數進行響應。 .then的第一個參數被認為是成功處理程序,第二個參數是失敗處理程序。

如果有多個AJAX調用,則可以在所有AJAX調用完成后使用$.when來執行操作。

$.when($.post( ... ), $.post( ... ))
  .then(function() {
    // If all AJAX calls succeed
  }, function() {
    // If any of the call fails
  });

由於每次點擊都會產生發布請求。 您需要跟蹤數組中的所有這些請求,然后等待它們解決。 因此,您的代碼應如下所示:

var requests = [];
$(document).on('click', '.btn-save', function () {
             // val logic
            requests.push($.post("/Entries/AddEntries"));
        });
Promise.all(requests).then((data) => {do something});

暫無
暫無

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

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