[英]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.