JQuery ждет ответа Ajax - PullRequest
       6

JQuery ждет ответа Ajax

2 голосов
/ 17 февраля 2012

У меня есть следующий код:

    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 ждать, пока все шесть запросов не будут выполнены, а затем выводить все из всех запусков вместе.

Примечание: значения страниц, perpage и pagenне имеют отношения к вопросу.

1 Ответ

4 голосов
/ 17 февраля 2012

Поскольку вы уже пытались сделать запросы 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...