![]() |
|
Модераторы: Sardar, Aliance |
![]()
|
|
| supercelt |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 658 Регистрация: 25.8.2005 Репутация: 1 Всего: 1 |
Здравтсвуйте!
Помогите пожалуйста. Есть вот такой рабочий пример: Имеем форму файл index.php
Файл custom.js
И собсно файл обработчик execute.php
Смысл в том, что когда нажимаем на кнопку поиск, то в слое result появляется 1234567890<>437657545. Всё верно. Задача в том, что обработчик может что-то выводить в цикле и надо отображать каждую итерацию не ожидая завершения работы php скрипта. Есть работающий пример для вывода после каждой итерации:
Работает, скрипт выведет с интервалом 1 сек каждую итерацию. Но если вызывать этот скрипт напрямую 1111111111/execute.php вот так. А через аякс не работает. Вот как в аякс вкрутить этот цыкл вывода? Это сообщение отредактировал(а) supercelt - 7.2.2013, 23:14 |
||||||||
|
|||||||||
| Arantir |
|
|||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 14 Всего: 55 |
Дело в том, что как бы не рассчитано на то, что через php вы что-то выводите "каждую секунду".
Как оно выводится - зависит от браузер и сервера. Постепенный вывод - это просто иллюзия. Сервер отправляет данные, отправляет, отправляет, пока все не отправит. Браузер в идеале ожидает окончания получения всех данных. Но если это затягивается, то часть уже полученного может быть показана заранее, чтобы пользователь не скучал... По-этому иногда можно мельком увидеть страницу в не самом лучшем виде (когда еще onLoad-скрипты не выполнились и всякие скриптовые вкладки/спойлеры наперекосяк получаются). И этот таймаут между показом кусков полученных данных у браузеров разный. Почему это невозможно? Все очень просто - в самом принципе работы современных браузеров. Сейчас запрос может быть инициирован только пользователем. Сервер запросы отправлять не может, только ответ на запрос. А чтобы отправлять данные с задержкой, то сервер должен сам инициировать их отправку каждый интервал времени (ведь браузер не в курсе, когда получать следующую порцию), а такое просто не предусмотрено. Ajax для вызова ивента complete ожидает окончания загрузки, соответственно с подобной задержкой в скрипте он сначала подождет все N итераций, а уже потом будет вызван ивент. В вебе все делается не так. Каждый отдельный запрос должен исходить со стороны пользователя. Это значит, что надо не через php каждую секунду выводить, а через JavaScript каждую секунду посылать запрос. Сохранить текущую итерацию можно в сессии, для чего они и были придуманы - хранить данные между запросами. А можно и через GET в ссылке передавать, а итерации в JS-скрипте хранить. -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
||||
|
||||
| Arantir |
|
||||
|
Рыбак без удочки ![]() ![]() Профиль Группа: Участник Сообщений: 960 Регистрация: 18.11.2012 Репутация: 14 Всего: 55 |
skyboy, в контексте читать надо, а не вырывать фразы. Или я ниже про JS не написал?
Вот вам цитата с той же википедии:
Именно о чем я и говорил... -------------------- interface Жопа { // ATTENTION: has to be implemented by every class of the project for proper project work } |
||||
|
|||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 10 Всего: 260 |
||||
|
||||
![]()
|
| Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |