Intereting Posts
Как использовать str_replace () для удаления текста определенное количество раз только в PHP? Является ли Quercus жизнеспособной заменой PHP в средах Java? Преждевременный конец заголовков скриптов: php-cgi – при запуске скрипта CURL Контактная форма отправляет электронную почту, но не приходят письма Можете ли вы объявить атрибут private в абстрактном классе? Как использовать PHP для отправки формы и получения файла с другого сайта? Youtube API (PHP) – как добавить (существующее) видео в существующий плейлист? создать папку и подпапку в этой папке Как использовать настраиваемую PHP-шаблонную систему Как jquery и php работают вместе с формами? Route :: post () показывает эту ошибку: MethodNotAllowedHttpException Проблема с использованием даты и времени MSSQL в PHP (через SQLSRV) Получить правильный час для отметки времени UNIX Как добавить переменную GET в текущий URL? Регулярное выражение для регулярных выражений?

Как загрузить ответ запроса ajax (jquery) постепенно, не дожидаясь его завершения?

Я хочу создать форму, которая будет использовать jquery для отправки списка ключевого слова в файл php, для загрузки этого файла может потребоваться много времени, в зависимости от размера списка ключевых слов.

Я хочу, чтобы загрузить php-ответ в div или контейнер в реальном времени без использования iframes.

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

Related of "Как загрузить ответ запроса ajax (jquery) постепенно, не дожидаясь его завершения?"

Действительно, есть способ. С простыми старыми объектами xmlhttpobjects я отслеживал readyState. Состояние готовности 4 означает, что запрос завершен. Состояние готовности 3 означает, что я могу получить часть вывода и ждать большего:

request.onreadystatechange=function() { switch(request.readyState) { case 4: console.log("all good things come to an end"); break; case 3: console.log("o, hai!" + request.responseText); break; } } 

Я считаю, что вы можете добиться того же, используя jQuery: jQuery: возможно ли req.readyState == 3?

Недавно Джош опубликовал о технологии COMET, которая, кажется, подходит вам. В php есть несколько интересных ссылок с примерами.

Как показать печать с помощью AJAX / jQuery?

Обновлено: Самый надежный способ использования Ajax – рассматривать каждый запрос Ajax как атомарный: он работает или нет.

И вы (JS, запущенный на странице), действительно не получаете никакой обратной связи по мере выполнения вашего запроса. Таким образом, вам понадобится несколько вызовов. Но будь осторожен! Множество накладных расходов для каждого звонка и большинства браузеров будут выполнять только один или два раза за раз.

Я предлагаю использовать индикатор занятости для человека. Вы также можете показывать часы с обратным отсчетом, которые обновляются не реже двух раз в секунду, чтобы казалось, что что-то происходит.

Добавлено:

Вы также можете захотеть перепроектировать свое решение. Например, просмотрите процесс обновления как пакетное задание, которое Ajax запускает, отправив запрос. Затем сделайте дальнейшие призывы Ajax, чтобы узнать (и затем) отобразить ход выполнения пакетного задания для человека.

Комету и другие «держать стратегию открытых труб» можно использовать, но сложно надежно работать и, как правило, используют много ресурсов. Более пешеходный метод опроса может быть намного легче начать. Затем при необходимости оптимизируйте.

Похоже, вам нужно использовать несколько меньших запросов вместо одного большого.