| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Применение библиотек > загрузка данных с сервера без прямого обновления |
| Автор: Alx 14.1.2006, 15:21 | ||||||||||||
| Для тех, кто не знает, теперь модно использовать сверх динамичные страницы. То есть страницы, которые получают или отправляют данные на сервер без перезагрузки самой себя, практически незаметно для пользователя. для этого есть три (и ещё один, но о нём позже) способа:
http://alx.com.ru/stats/dataload/test.html
а вот соодержимое всех трех php-обработчиков: HttpRequest.php
change_src.php
iframe.php
все три способа имеют свои преимущества и недостататки. XMLHttpRequest + имеет самую высокую скорость выполнения + незаметен для пользователя (никаких прелоадеров в statusbar`е) - поддерживается только MSIE 6.0+, Firefox и Netscape 7+ - не сработает, если в MSIE отключена обработка ActiveX Загрузка php-обработчика, как внешнего скрипта + имеет хорошую скорость выполнения + работает в MSIE 5.5+, Opera 7, Firefox 1.0+, Mozilla 0.9+, Netscape 7 - не работает в Opera 8 и Netscape 8 - в браузерах отображается preloader Использование невидимого iFrame + работает во всех браузерах + после запроса php файл может работать самостоятельно - имеет низкую скорость выполнения - загрязняет историю браузера - в statusbar`е браузеров отображаются прелоадеры. Что касается третьего способа, то он практически выбывает из борьбы за выживание, но у первых двух тоже свой большой недостаток - некроссбраузерность. К счастью есть выход, а именно метод, объединяющий первые два способа и работающий на высоких скоростях во всех браузерах! Метод этот - http://dklab.ru/lib/Subsys_JsHttpRequest, разработанный dk lab. на странице разработчика, посвещённой данному методу, не очень хорошие примеры, много лишнего, трудно проникнуться сутью. однако сделать это стоит, если хотите использовать все возможности этого набора библиотек для обхода всех глюков и багов. я же всё это дело упростил до нашего примера. посмотреть его можно тут - http://alx.com.ru/stats/dataload/test.html. вот, что ещё есть в файле test.html:
а вот содержимое php-файла, выполняющего обработку запроса:
+ папка dk_JsHttpRequest, в которой находятся JS- и PHP-библиотеки. скачать всю эту красоту можно тут - http://alx.com.ru/stats/dataload/dataloaders.rar У дачи! |
| Автор: Cheba 14.1.2006, 19:33 | ||||
Небольшой фикс:
В чем отличие... Он не подменяет src у уже существующго скрипта, а создает новую ноду script с нужным src. После добавления такой ноды Лиса будет загружать файл скрипта. Перед добавлением ноды старая нода удаляется во избежание скопления лишнего мусора. |
| Автор: Alx 15.1.2006, 00:27 |
| Sardar спасибо, обновил, ща загружу в фак! Cheba спасибо и + ! Добавлено @ 00:39 http://vingrad.ru/JAVASCRIPT-ART-002998 |
| Автор: Innuendo 15.1.2006, 09:02 |
| 2 Alx Спасибо, полезная вещь. Вопрос: какую структуру лучше использовать? с iframe? пусть она медленнее, но хоть уверены что у всех будет работать (поддержка браузеров велика) |
| Автор: Alx 15.1.2006, 11:05 | ||
Innuendo
гы, а за статьи плюсы дают? |
| Автор: Innuendo 15.1.2006, 11:21 | ||
гы, да я не жадный |
| Автор: Sardar 15.1.2006, 15:46 | ||
Xотел поставить, но оценил статью... вообщем она ещё не готова, это пока просто пример, один из сотен по сети. Больше строк бы к коду, что где конкретно происходит, включая серверную сторону, этим и хотел чуть позже заняться. Попробуешь? |
| Автор: Alx 15.1.2006, 16:19 |
| Sardar если объяснишь лучше задачу, то могу попробывать. ты имеешь ввиду имеено развитие решения Subsys_JsHttpRequest или идеи в целом? я просто пока немножко не понимаю, что тут развивать? js обращается к серверу, сервер обрабатывает и возвращает данные в любом количестве, которыми оперирует js... что ещё нужно? или у тебя есть какие-то конкретные идеи? |
| Автор: Cheba 15.1.2006, 18:32 |
| Было бы неплохо, если бы ты показал как обрабатывать результаты в виде XML для XMLHTTP Reques. Не даром ведь его так назвали. |
| Автор: Lixil 19.1.2006, 12:30 | ||
| Я бы не стал хоронить iframe, если не ошибаюсь это единственный способ крепить файлы без перезагрузки страницы. А вот код, который выдергивает содержимое iframe
сам долго искал, может кому пригодится. Добавлено @ 12:31 Alx у плюс от S.A.P. как только домой вернусь |
| Автор: Sardar 20.1.2006, 03:35 | ||||
Пока это просто короткий пример коих много. Xорошо бы более законченый реальный проект с законченым кодом, а не просто "мы получилли строку". Народ реально не знает что с этим делать можно, кто то JS код отдаёт, что потом на eval, кто то парсит сам и не многие знают что префикс XML не зря стоит DOM (для XML лучше XPath, это для редактирования контента) не нужно обяснять, тут главное дать затравку, ищущий найдёт необходимое.
Заполнение формы всё равно на пользователе, просто отправка в конкретный фрейм, не важно какой. |
| Автор: Smak 8.12.2006, 04:39 |
| Скажите, а как сделать чтобы этот скрипт получал данные с сервера например каждую секунду? т.е. в данном случае данные с сервера загружаються при нажатии на button. А если это чат. загружать новые сообщения нужно довольно часто. как это можно сделать? я так понимаю нужна функция которая будет только загружать с сервера данные. исполюзую Subsys_JsHttpRequest. |
| Автор: Alx 8.12.2006, 14:35 |
| эээ... ну для всего есть соответствующие функции.. в данном случае можно использовать setInterval() или setTimeout(), но этого вам будет мало для написания чата... |