http / html / ajax: показать результат до полной обработки сайта - PullRequest
1 голос
/ 02 апреля 2010

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

Проблема в том, насколько я вижу, что сайт будет возвращен в браузер пользователей ПОСЛЕ того, как задача будет завершена, поскольку задача является частью сайта каквстроенный код заменяется интерпретатором веб-сервера (независимо от того, является ли PHP, Perl и т. д.)

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

Есть идеи сделать это менее сложным?Спасибо за помощь!

Ответы [ 3 ]

0 голосов
/ 02 апреля 2010

Несколько способов сделать это:

1) Извлеките задачу из собственного файла, чтобы она не была встроенной. Затем используйте асинхронный AJAX для запроса задачи. Показать индикатор выполнения при срабатывании события и скрыть его, когда это будет сделано.

2) Убедитесь, что вы передаете данные обратно в браузер (это значение по умолчанию в php.). Если вы запускаете php как CGI, он выполнит весь скрипт, прежде чем что-либо вернуть в браузер. В этом случае вам нужно будет o # 1 Поместить встроенное задание как последнюю вещь на странице. Там, где сейчас находится встроенная задача, установите <div id=loading>Content Loading Please Wait</div> или счетчик / индикатор выполнения.

Захват вывода встроенного задания в переменную php. В конце задания добавьте <script>document.getElementById('loading').innerHTML ="$taskResult";</script>

0 голосов
/ 02 апреля 2010

См. Просмотр длинных процессов через CGI . Вы можете адаптировать ту же технику для отображения обновлений, используя вызовы AJAX.

0 голосов
/ 02 апреля 2010

Сервер должен начать отправку содержимого в браузер, как только ваш код начнет выполняться; он не ждет, пока код на стороне сервера завершится первым.

Таким образом, вы можете просто запустить задачу после рендеринга HTML-кода, содержащего сообщение ожидания. После выполнения задачи вы можете отобразить блок <script>, который скрывает сообщение ожидания.

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