![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
Alx |
|
||||||||||||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
Для тех, кто не знает, теперь модно использовать сверх динамичные страницы.
То есть страницы, которые получают или отправляют данные на сервер без перезагрузки самой себя, практически незаметно для пользователя. для этого есть три (и ещё один, но о нём позже) способа:
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`е браузеров отображаются прелоадеры. Что касается третьего способа, то он практически выбывает из борьбы за выживание, но у первых двух тоже свой большой недостаток - некроссбраузерность. К счастью есть выход, а именно метод, объединяющий первые два способа и работающий на высоких скоростях во всех браузерах! Метод этот - 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 У дачи! ![]() |
||||||||||||
|
|||||||||||||
Sardar |
|
||||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 3 Всего: 317 |
Не верно, работает везде кроме Оперы 8 и Netscape 8. Вернее работает, но почему то переданный параметрами в функции данные JSON убиваються и получаем NULL. Видать какая политика безопасности или баг...
Добавил бы самое вредное качество - загрязнение истории, все переходы браузером "назад" престанут работать если только не спроектировать правильно скрипты... но это всё равно криво...
Комбинирует первый и второй способ, но выбор делает динамично, смотря что у пользователя есть. Действительно самый лучший выбор, т.к. не нужно думать о деталях, также скрипт имеет много workaround приёмов для обхода различных багов. Отсюда совет: хотите использовать динамику, JSHttpRequest от Котерова лучший ИМXО выбор. Alx классно, дополни мои замечания и в FAQ ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||||
|
|||||||
Cheba |
|
||||
![]() pointless one ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1777 Регистрация: 27.11.2003 Где: /dev/null Репутация: 1 Всего: 62 |
Небольшой фикс:
В чем отличие... Он не подменяет src у уже существующго скрипта, а создает новую ноду script с нужным src. После добавления такой ноды Лиса будет загружать файл скрипта. Перед добавлением ноды старая нода удаляется во избежание скопления лишнего мусора. |
||||
|
|||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
Sardar
спасибо, обновил, ща загружу в фак! Cheba спасибо и + ! Добавлено @ 00:39 http://vingrad.ru/JAVASCRIPT-ART-002998 |
|||
|
||||
Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: нет Всего: 6 |
2 Alx
Спасибо, полезная вещь. Вопрос: какую структуру лучше использовать? с iframe? пусть она медленнее, но хоть уверены что у всех будет работать (поддержка браузеров велика) Это сообщение отредактировал(а) Innuendo - 15.1.2006, 09:09 -------------------- =) |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
Innuendo
![]() гы, а за статьи плюсы дают? ![]() ![]() |
|||
|
||||
Innuendo |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 745 Регистрация: 24.12.2005 Где: Молдова Репутация: нет Всего: 6 |
гы, да я не жадный ![]() ![]() -------------------- =) |
|||
|
||||
Sardar |
|
|||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 3 Всего: 317 |
Xотел поставить, но оценил статью... вообщем она ещё не готова, это пока просто пример, один из сотен по сети. Больше строк бы к коду, что где конкретно происходит, включая серверную сторону, этим и хотел чуть позже заняться. Попробуешь? ![]() -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
Sardar
если объяснишь лучше задачу, то могу попробывать. ты имеешь ввиду имеено развитие решения Subsys_JsHttpRequest или идеи в целом? я просто пока немножко не понимаю, что тут развивать? js обращается к серверу, сервер обрабатывает и возвращает данные в любом количестве, которыми оперирует js... что ещё нужно? или у тебя есть какие-то конкретные идеи? |
|||
|
||||
Cheba |
|
|||
![]() pointless one ![]() ![]() ![]() Профиль Группа: Vingrad developer Сообщений: 1777 Регистрация: 27.11.2003 Где: /dev/null Репутация: 1 Всего: 62 |
Было бы неплохо, если бы ты показал как обрабатывать результаты в виде XML для XMLHTTP Reques. Не даром ведь его так назвали.
![]() |
|||
|
||||
Lixil |
|
|||
Unregistered |
Я бы не стал хоронить iframe, если не ошибаюсь это единственный способ крепить файлы без перезагрузки страницы.
А вот код, который выдергивает содержимое iframe
сам долго искал, может кому пригодится. Добавлено @ 12:31 Alx у плюс от S.A.P. как только домой вернусь ![]() |
|||
|
||||
Sardar |
|
||||
![]() Бегун ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 6986 Регистрация: 19.4.2002 Где: Нидерланды, Groni ngen Репутация: 3 Всего: 317 |
Пока это просто короткий пример коих много. Xорошо бы более законченый реальный проект с законченым кодом, а не просто "мы получилли строку". Народ реально не знает что с этим делать можно, кто то JS код отдаёт, что потом на eval, кто то парсит сам и не многие знают что префикс XML не зря стоит ![]() DOM (для XML лучше XPath, это для редактирования контента) не нужно обяснять, тут главное дать затравку, ищущий найдёт необходимое.
Заполнение формы всё равно на пользователе, просто отправка в конкретный фрейм, не важно какой. -------------------- Опыт - сын ошибок трудных © А. С. Пушкин Процесс написания своего велосипеда повышает профессиональный уровень программиста. © Opik Оценить мои качества можно тут. |
||||
|
|||||
Smak |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 40 Регистрация: 30.6.2005 Репутация: нет Всего: 1 |
Скажите, а как сделать чтобы этот скрипт получал данные с сервера например каждую секунду?
т.е. в данном случае данные с сервера загружаються при нажатии на button. А если это чат. загружать новые сообщения нужно довольно часто. как это можно сделать? я так понимаю нужна функция которая будет только загружать с сервера данные. исполюзую Subsys_JsHttpRequest. Это сообщение отредактировал(а) Smak - 8.12.2006, 05:45 |
|||
|
||||
Alx |
|
|||
Ajaxy ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2903 Регистрация: 26.11.2003 Где: Cutopia Репутация: 6 Всего: 78 |
эээ... ну для всего есть соответствующие функции.. в данном случае можно использовать setInterval() или setTimeout(), но этого вам будет мало для написания чата...
![]() |
|||
|
||||
![]() ![]() ![]() |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Применение библиотек | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |