сообщите пользователю во время расчета php с jquery - PullRequest
2 голосов
/ 16 июля 2009

Я пишу код на PHP, который анализирует вводимые пользователем данные. Я надеюсь проанализировать его с помощью AJAX-запроса с использованием jquery. Я хотел бы предоставить пользователю обратную связь в режиме реального времени, пока я выполняю расчеты. Например: «Загрузка данных», «Анализ», «Подготовка окончательного результата» и т. Д. Как я могу прислониться к этому?

Ответы [ 2 ]

1 голос
/ 16 июля 2009

Предполагая, что у вас есть служба, расположенная по адресу /service-status.php, которая проверила состояние задания и вернула строку, вы можете сделать что-то подобное в некотором интервале.

var intervalId;
intervalId = setInterval( function() {
   $.ajax({
       type: "POST",
       url: "/service-status.php",
       data: "jobid=" + id,
       success: function(msg){
         if (msg === 'Finished') {
           clearInterval( intervalId );
         }
         alert( "Status: " + msg );
       },
       error: function(XMLHttpRequest, textStatus, errorThrown) {
          alert("He's dead Jim"):
          clearInterval( intervalId );
       }

  })
}, 500);

Это будет опрашивать ваш сервис каждые 500 мс. Также предполагается, что вы вернете «Готово», когда закончите. Отрегулируйте соответственно. Я мог бы также поставить счетчик там, чтобы очистить интервал на всякий случай, чтобы вы не использовали DDOS для своего собственного сервера.

1 голос
/ 16 июля 2009

Вам потребуется другой серверный сценарий, выполняющий обработку, а не тот, которому вы отправляете свой запрос. Ваш исходный ajax-запрос может хранить вводимые пользователем данные для анализа, а другой процесс проверяет наличие новых данных для регулярной работы и начинает работать, когда находит их. Затем этот фоновый процесс может записывать свой прогресс, например, используя файл или базу данных.

Последующие запросы Ajax будут проверять этот файл прогресса или запись в базе данных и отображать прогресс для пользователя.

Другим (более сложным) решением будет использование Comet для передачи информации о состоянии с сервера в браузер. В работе есть плагин для кометы для JQuery, как описано в вопрос StackOverflow 136012 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...