javascript - JQuery 等待 Ajax 响应

标签 javascript ajax jquery loops

我有以下代码:

    for (i=1;i<=pages;i++) {
        $('#procout').append(Processing Page#"+i+"<br />");
        $.ajax({
            url: 'processor.php',
            data: {storen: perpage, pagen : i},
            success: function(data) {
                $('#procout').append(data+"<br />");

            }
        });
    }

我想做的是让脚本在每次循环后等待 Ajax 响应。相反,它会按照服务器响应的顺序(乱序)打印出“处理页面”行以及每次运行的 Ajax 响应。我尝试将 async 选项设置为 false,但这只会导致 JS 等待所有六个请求完成,然后一起输出所有运行的所有内容。

注意:pages、perpage 和 pagen 的值与问题无关。

最佳答案

由于您已经尝试过发出 ajax 请求 async:false (无论如何,这很少是一个好主意),请考虑将循环体分解为发出 ajax 请求的函数,并且然后在回调中运行下一个请求:

function runRequest(num){
    if (num > pages) return; //since your original was looping while i <= pages

    $('#procout').append("Processing Page#" + num + "<br />");
    $.ajax({
       url: 'processor.php',
       data: {storen: perpage, pagen : num},
       success: function(data) {
           $('#procout').append(data + "<br />");

           runRequest(num + 1);
       }
    });
}

当然,然后开始该过程

runRequest(0);

关于javascript - JQuery 等待 Ajax 响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9319325/

相关文章:

javascript - 如果缺少空格,Coffeescript 编译器会串联到函数应用程序吗?

php - Laravel:使用ajax和多个controller@action更改div

javascript - 我的 ajax 调用没有从 PHP/Mysql 中提取动态数据

javascript - jQuery 按钮显示在菜单顶部

jquery - 应用边框时保持元素位置固定

php - PHP和JS如何共享HTML模板?

javascript - angularjs ng-show 绑定(bind)不适用于 jQuery

javascript - 使用简单的 jison 语法解析错误

php - Ajax 表单有时只提交

javascript - 'rel' 属性 : prop() vs attr() 的行为