簡體   English   中英

jQuery內部有多個ajax調用,用於循環記錄相同的響應

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

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