我想在選定復選框的每個回圈中運行 ajax。然而,'jquery each' 忽略了 ajax 行程。完成或未完成回圈將繼續。抱歉我的語言,希望它是可以理解的。
這是我制作的代碼的示例。
$('input[name="options[]"]:checked').each(function() {
jQuery.ajax({
url: "www.example.com",
type: "POST",
data: {
name:name
},
success: function(data) {
// do something
}
});
});
我試過在ajax選項中使用async:false,但是頁面卡住了,處理完成后會恢復正常。
uj5u.com熱心網友回復:
因此,對于任何型別的 Promise 批次,您所要做的就是將它們全部收集到陣列中并傳遞給“batch Promises”函式。無論是 jQuery、Angular 還是其他
// Gather all promises returned from $.ajax
var allPromises = [];
$('input[name="options[]"]:checked').each(function () {
allPromises.push(
callAjax($(this).val()
);
});
$.when(allPromises).then(function () {/* do something after all*/})
function callAjax(name) {
// Returns promise from $.ajax
return jQuery.ajax({
url: "www.example.com",
type: "POST",
data: {name: name},
success: function (data) {/* do something after this call*/}
});
}
uj5u.com熱心網友回復:
這是使用 的替代解決方案fetch(),因為它在所有現代瀏覽器中都可用(不需要 jQuery):
const jsrv='https://jsonplaceholder.typicode.com/',
arr='users,posts,comments'.split(',');
Promise.all(arr.map(e=>fetch(jsrv e).then(r=>r.json())))
.then(console.log)
.as-console-wrapper {max-height:100% !important}
在這個示例腳本中,我收集了對 typicode.com 提供的公開可用資源的三個 Ajax 呼叫的回應:結果陣列由三個包含用戶、帖子和評論的陣列組成。在我的演示中,我只是提供console.log了處理功能。這在現實生活中當然會有所不同。
fetch也可以一起使用POST,請參閱此處了解更多詳細資訊:https : //developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/326184.html
標籤:javascript 查询 阿贾克斯
下一篇:Ajax注冊后如何直接獲取記錄
