首页 > 解决方案 > 循环内的 Jquery ajax 仅在第一个循环上运行

问题描述

请帮助我理解为什么我的 ajax 代码只在第一个循环上运行。我有一个 JSON 数组。需要处理每个 JSON 以从服务器获取响应。发生的情况是“处理中...”作为 arrayJSON 的长度在控制台中记录的次数,然后第一个循环将运行 ajax。之后我收到超时错误。下面是我的代码。非常感谢!

        $.each(arrayJSON, function(i, arrayJSONInstance) {

            jsonString = JSON.stringify(arrayJSONInstance);

            $.ajax({
                url: "php/phpcode.php",
                data: {
                    data: jsonString
                },
                dataType: "json",
                type: "POST",
                timeout: 0,
                beforeSend: function (response) {
                    console.log("Processing...");
                },
                success: function (response) {
                    console.log(response);
                    console.log("Success!");
                },
                error: function(response) {
                    console.log("ERROR:\n");
                    console.log(response);
                }
            });
        });

标签: jqueryajaxloopsasynchronous

解决方案


众所周知,ajax 调用是异步的,您的代码会发送多个 ajax 调用(取决于数组的长度)。

尝试使用以下方法使 ajax 调用同步:

async: false

告诉我它是否解决了问题。


推荐阅读