[英]jQuery multiple ajax calls inside for loop logging same responses
我的代碼是這樣的:
for (var i = 0; i < stf_file_names.length; i++) {
var temp_file_name = stf_file_names[i];
$.ajax({
type: "POST",
url: "php_scripts/some_script.php",
data: {
stf_file_name: temp_file_name
},
timeout: 600000,
success: function (response) {
console.log("SUCCESS : ", response);
//pausecomp(2000);
}
});
}
在這里,some_script.php在后端更新數據庫,並回顯已更新行的主鍵,該鍵是一個數字。 但是,當我使用成功函數進行日志記錄時,我可以看到它僅記錄了上次ajax調用多次回顯的主鍵。
但是,如果我使用某種睡眠功能(在這種情況下為pausecomp()),它將輸出不同的主鍵回顯。
我已經看過多個關於此的stackoverflow問題,但尚未解決。
async: false
將勝任
$.ajax({
type: "POST",
async: false,
url: "php_scripts/some_script.php",
data:
但是,不建議這樣做,最好通過從成功遞歸調用函數來進行循環。
這是例子。
i=0;
function loop_stf_file_names(i){
var temp_file_name = stf_file_names[i];
$.ajax({
type: "POST",
url: "php_scripts/some_script.php",
async: false,
data: {
stf_file_name: temp_file_name
},
timeout: 600000,
success: function (response) {
console.log("SUCCESS : ", response);
if( i < stf_file_names.length ){
loop_stf_file_names( ++i );
}
}
});
}
$.ajax()
是一個異步函數。
通過遍歷ajax,您很可能在所有請求中發送相同的數據,因此您將為所有請求接收相同的密鑰。
可以肯定,當您收到第一個請求的響應時,您將發送下一個請求。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.