Множественный ответ Ajax — отчет при обработке

#ajax #jquery

#ajax #jquery

Вопрос:

Я использую ajax (jquery) для публикации элементов в моей базе данных.
перед отправкой в базу данных мой скрипт проверяет, есть ли некоторые вещи, например: во-первых, он проверяет, все ли в порядке с правилами, которые я дал, во-вторых, проверяет, существует ли уже отправленное изображение в базе данных, в-третьих, проверяет, есть ли дубликаты, вычисляя similar_text для элементов на ту же дату.

Я хотел бы знать, как я могу сообщать каждый раз, когда php выдает эхо, а не только в конце.

Я буду знать, на каком этапе я нахожусь, потому что первое эхо будет «1», второе будет «2», а третье будет «3» (1,12,123 эхо добавляет текст).

Спасибо.

Ответ №1:

Как вы это описываете, это невозможно. ЕСЛИ вы хотите получить несколько ответов, вам потребуется несколько запросов. Вы не можете заставить один вызов ajax возвращать несколько ответов.

Однако вы могли бы разбить его на несколько запросов. Сначала отправьте ajax-запрос для проверки правил проверки, второй — для проверки, существует ли он уже, и т.д. И тогда вы можете заставить каждый обратный вызов вызывать следующий ajax-запрос в цепочке.

Комментарии:

1. Моей первой мыслью было разделить код, чтобы у меня было несколько вызовов. Я просто хотел убедиться, что другого способа нет. Спасибо.

Ответ №2:

Вам просто нужен <div> на вашей странице, в который вы можете .append отслеживать текущий прогресс в .success() обратном вызове каждого из сообщений AJAX.

 <div id="progress">

$.ajax( call1 ).success(function(resp) {
    // do something with resp
    $('#progress').append('step 1 done<br/>');

    $.ajax( call2 ).success(function(resp) {
        // do something with resp
        $('#progress').append('step 2 done<br/>');
    } 

etc...
  

Комментарии:

1. по-вашему, мне нужно вызывать страницу каждый раз, но я не должен этого делать … за один вызов я получаю все три ответа..

2. ах, это было совершенно неясно из текста вашего вопроса. Вы имеете в виду, что в вашем скрипте на PHP вы делаете три вещи?