| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > JavaScript: Наши скрипты > Подгрузка данных без перезагрузки страницы |
| Автор: diam 25.5.2005, 14:45 | ||||||||
| OFF: предлагаю в эту тему складывать все варианты подгрузки данных на страницу без её перезагрузки. Иногда появляется необходимость взаимодействия страницы с сервером, передача серверу определённых параметров, получение от него ответа, при этом задача стоит так, что нужно обновить только часть данных и без перезагрузки основной страницы. Как я себе представляю подгрузку данных. Подгрузить данные в виде картинок, текста и т.п., в общем, не требующего при этом передачи серверу параметров - не представляет из себя никакой сложности. Сложность появляется тогда, когда нужно подгрузить данные на основе каких-либо критериев. Например, у вас есть БД, в которой в виде таблицы лежит информация по улицам, домам, квартирам (т.е., три связанных списка, от улицы зависят дома, которые на ней расположены, от домов - квартиры, которые находятся в этом доме). Передавать всю эту информацию на страницу может быть затруднительным, если, например, в этой таблице больше 100 000 записей. Тут нам может помочь следующий принцип: сначала передаём список улиц, потом, в зависимости от выбранной улицы, передаём список домов, потом, в зависимости от дома - список квартир. Соответственно, для получения списка домов на сервер нужно передать выбранную квартиру, а для списка квартир - выбранные дом и улицу. Как можно решить подобные задачи? На мой взгляд, нужно с сервера нужно получать JavaScript'овые файлы, содержимое которых зависит от переданных параметров. Ведь если мы сможем получать JavaScript'овые файлы с зависимым от параметров содержимым - то мы можем получать что угодно: списки, новые функции, делать вызовы старых функций и т.п. - не говоря уже про получение статического контента. Одно из возможных решений - использование метода appendChild, который будет добавлять в наш документ скрипт. Особенности: 1. Данные пердаются методом GET, что накладывает размер на передаваемые параметры (4 кб по спецификации HTTP) 2. Можно передавать только текстовые параметры, нельзя передать бинарные (файлы, к примеру). Ниже приведён код с комментариями. Обсуждение http://forum.vingrad.ru/index.php?showtopic=47923.
Теперь подведу итоги, кратко. 1. Конструктор.
2. Кусок HTML кода с примером использования сего метода
3. Ну, и наконец, кусок кода на PSP, обрабатывающий запрос и выдающий скрипт*. К сожалению, подсветки под python не сделали (ех, какой большой минус), буду пользоваться подсветкой cpp.
* Этот же код можно написать на чём угодно, включая php. Но я пишу на psp, так что эту часть доделывайте сами Пользуйтесь на здоровье. |
| Автор: 02077461 27.9.2005, 10:38 |
| А чем не устраивает создать фрейм и через него с помощью одного скрипта делать все необходимые транзакции?? Лично мне логичнее представлять, что на странице есть некая статическая разметка и объект (скажем таблица) который требует изменения... Взять например сайт http://www.translate.ru/text.asp?lang=ru: меня он бесит!!! Там более 60 кб ТОЛЬКО ТЕКСТА, который никому не нужен. Применение фреймов также полезно, если используются статические страницы, которые могут быть кешированы на проксе например. Добавлено @ 10:47 подписаться забыл... |
| Автор: Sardar 3.10.2005, 12:08 |
| 02077461 у фрейма есть два негативных момента: он щёлкает в ИЕ и он ведёт себя по разному в разных браузерах и даже в разных режимах работы(quirks, standart compilance). Второй момент, не всегда сервер может выдать страницу, слышал когда нибудь о вебсервисах? Например опрашиваем у вебсервиса погоду или курс валют, Яндекс.xml, общение только на XML(XML RPC, SOAP etc), данные ты тоже в XML получаешь. Вот тут и появляеться AJAX технология, правда она имеет мало общего с JSON приведённом в этом топике В любом случае передавать инфу - это меньше трафа чем эту же инфу с разметкой. |