созидательная сила AJAX ALEXEY SHOCKOV Спецвыпуск: Хакер, номер #067, стр. 067-052-2 Традиционный подход прост для разработки, но вынуждает пользователя постоянно тратить время. Приходится ждать, пока не будет отправлена заполненная форма при голосовании на сайте. Приходится ждать всегда. Новый подход, основанный на базе AJAX, позволяет повысить интенсивность обмена данными между пользователем и серверным приложением, тем самым уменьшать время простоя сервера и, что главное, улучшать дружественность интерфейса. Благодаря асинхронному взаимодействию интерфейса с серверной частью пользователю открываются новые грани удобства. К примеру, если на нашей странице находится множество документов, мы можем с самого начала загрузить только самые популярные из них, а остальные, если пользователь захочет их прочитать, подгружать автоматически. Традиционный и AJAX-подход показаны на схеме №2. [с небес на землю] Плавно переходя от теории к практике, затронем вечно животрепещущую тему — совместимость браузеров. Если говорить подробнее о реализации объекта XMLHTTPRequest в каждом конкретном браузере, то можно обнаружить интересные «подводные камни», с которыми сталкивается web-разработчик. К примеру, в браузере MS Internet Explorer XMLHTTPRequest представляет собой ActiveX-компонент. Соответственно, если пользователь по каким-то причинам отключил в браузере ActiveX, то web-страница, написанная с использование AJAX, не сможет получить доступ к одному из своих главных компонентов. Браузеры Мozilla Foundation, такие как Mozilla и Firefox, на мой взгляд, имеют лучшую поддержку объекта XMLHTTPRequest, независимую от каких-либо расширений и встроенную в браузер. Единственной особенностью является ограничение на загрузку документов только с текущего сайта при настройках по умолчанию. Opera начиная с восьмой версии тоже поддерживает XMLHTTPRequest, что, правда, сильно ограничено. В связи с этим для Opera существует несколько различных подходов по реализации динамической подгрузки данных. Может показаться странным, но если по каким-то причинам объект XMLHTTPRequest недоступен, многие используют элемент IFRAME, который все еще служит нам верой и правдой. Правда, я не рекомендую использовать данный подход по нескольким причинам. Во-первых, при загрузке данных раздается характерный щелчок и в историю браузера добавляется новая запись о загружаемой странице, что не есть хорошо. Во-вторых, этот подход добавляет медлительности: для каждого элемента IFRAME фактически создается новое окно браузера. Второй вариант связан с использование динамически создаваемого элемента SCRIPT, в атрибуте SRC которого будет содержаться адрес серверного скрипта, отвечающего за выдачу данных. Здесь нужно сделать пару оговорок. Обмен данными с серверным скриптом может осуществляться только методом GET и в ответ он может выдавать только валидный код на JavaScript. Каждая библиотека использует свой подход, и ниже мы рассмотрим одну из них — Subsys_JsHttpRequest. [примеры использования] Все больше крупных web-сайтов начинают использовать технологию AJAX для улучшения интерактивного взаимодействия с пользователем. Самая удачная реализация, на мой взгляд — web-интерфейс почтовой службы Gmail компании Google. Если у нас есть такой пример, то я не могу не уделить внимание одной из самых, по-моему, важных тем — проектирование AJAX-приложений. Одно дело — просто писать программы, и совсем другое — писать эффективные программы. |