AJAX, Ajax (ˈeɪdʒæks, от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся быстрее и удобнее.
По-английски AJAX произносится как «э́йджэкс», по-русски довольно распространено «ая́кс».
Технология[]
AJAX — не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах:
- использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, например:
- использование DHTML для динамического изменения содержания страницы;
Действия с интерфейсом преобразуются в операции с элементами DOM (англ. Document Object Model), с помощью которых обрабатываются данные, доступные пользователю, в результате чего представление их изменяется. Здесь же производится обработка перемещений и щелчков мышью, а также нажатий клавиш. Каскадные таблицы стилей, или CSS (англ. Cascading Style Sheets), обеспечивают согласованный внешний вид элементов приложения и упрощают обращение к DOM-объектам. Объект XMLHttpRequest (или подобные механизмы) используется для асинхронного взаимодействия с сервером, обработки запросов пользователя и загрузки в процессе работы необходимых данных.
Три из этих четырех технологий — CSS, DOM и JavaScript — составляют DHTML (англ. Dynamic HTML). По мнению некоторых специалистовШаблон:Каких средства DHTML, появившиеся в 1997 году, подавали большие надежды, но так и не оправдали их.
В качестве формата передачи данных могут использоваться фрагменты простого текста, HTML-кода, JSON или XML.
История[]
Впервые термин AJAX был публично использован 18 февраля 2005 года в статье Джесси Джеймса Гарретта (Jesse James Garrett) «Новый подход к веб-приложениям»[3]. Гарретт придумал термин, когда ему пришлось как-то назвать новый набор технологий, предлагаемый им клиенту.
Однако в той или иной форме многие технологии были доступны и использовались гораздо раньше, например в подходе «Remote Scripting», предложенном компанией Microsoft в 1998 году, или с использованием HTML элемента IFRAME, появившегося в Internet Explorer 3 в 1996 году.
AJAX стал особенно популярен после использования его компанией Google в сервисах Gmail, Google Maps и Google Suggest.
Преимущества[]
- Экономия трафика
- Использование AJAX позволяет значительно сократить трафик при работе с веб-приложением благодаря тому, что часто вместо загрузки всей страницы достаточно загрузить только изменившуюся часть, как правило, довольно небольшую.
- Уменьшение нагрузки на сервер
- AJAX позволяет несколько снизить нагрузку на сервер. К примеру, на странице работы с почтой, когда вы отмечаете прочитанные письма, серверу достаточно внести изменения в базу данных и отправить клиентскому скрипту сообщение об успешном выполнении операции без необходимости повторно создавать страницу и передавать её клиенту.
- Ускорение реакции интерфейса
- Поскольку нужно загрузить только изменившуюся часть, пользователь видит результат своих действий быстрее.
- Обращения сайта к серверу не ограничиваются щелчками по ссылкам и отправкой форм
- Например, при вводе запроса в Google выводится подсказка. На многих сайтах при регистрации пользователь вводит имя, и сразу же выводится, доступно это имя или нет; это тоже AJAX. AJAX удобен для программирования чатов, административных панелей и других инструментов, которые выводят меняющиеся со временем данные.
Недостатки[]
- Отсутствие интеграции со стандартными инструментами браузера
- Динамически создаваемые страницы не регистрируются браузером в истории посещения страниц, поэтому не работает кнопка «Назад», предоставляющая пользователям возможность вернуться к просмотренным ранее страницам, но существуют скрипты, которые могут решить эту проблему.
- Другой недостаток изменения содержимого страницы при постоянном URL заключается в невозможности сохранения закладки на желаемый материал. Проблему можно успешно решить с помощью History.pushState.[4]
- Динамически загружаемое содержимое недоступно поисковикам (если не проверять запрос, обычный он или XMLHttpRequest)
- Поисковые машины не могут выполнять JavaScript, поэтому разработчики должны позаботиться об альтернативных способах доступа к содержимому сайта.
- Старые методы учёта статистики сайтов становятся неактуальными
- Многие сервисы статистики ведут учёт просмотров новых страниц сайта. Для сайтов, страницы которых широко используют AJAX, такая статистика теряет актуальность.
- Усложнение проекта
- Перераспределяется логика обработки данных — происходит выделение и частичный перенос на сторону клиента процессов первичного форматирования данных. Это усложняет контроль целостности форматов и типов. Конечный эффект технологии может быть нивелирован необоснованным ростом затрат на кодирование и управление проектом, а также риском снижения доступности сервиса для конечных пользователей.
- Требуется включенный JavaScript в браузере
- JavaScript может быть выключен из соображений безопасности. И, конечно же, AJAX-страницы труднодоступны неполнофункциональным браузерам, роботам и веб-архивам.
- Низкая скорость при грубом программировании
- Казалось бы, AJAX предназначен именно для повышения скорости. Но, когда AJAX-запросов на одной странице много и, например, по каждому щелчку подгружается список, AJAX-страница становится даже медленнее традиционной.
- Риск фабрикации запросов другими сайтами
- Таковая возможна, когда результат работы AJAX-запроса является Javascript-кодом (в частности, JSON). XMLHttpRequest действует только в пределах одного домена, а вот тэг
<script>
— нет. Если написать
<script type="text/javascript" src="http://example.org/inbox.php"></script>
- то в HTML будет вставлена папка входящих сообщений того пользователя, который на этом компьютере авторизован на
example.org
. Для защиты используют POST-запрос. Но GET считается идемпотентным и потому кэшируется, POST — нет, поэтому Google вставляет в начало ответа бесконечный цикл: AJAX может делать с ответом что угодно, в том числе убрать цикл, а тэг<script>
подключит скрипт как есть и зациклится.
Альтернативные технологии[]
В хронологическом порядке:
- Java-апплеты, позднее технология JavaFX;
- Технология Silverlight корпорации Microsoft;
- Протокол WebSocket.
Adobe Flash[]
Стек технологий Flash (ранее — Macromedia Flash) в виде ActionScript 3, Adobe Flex и Flash Remoting составляет технологическую основу RIA (Rich Internet Applications) активно продвигаемых Macromedia (теперь часть Adobe). Технология Flash подходит для самых разных применений — от компьютерных игр до сложных интерфейсов бизнес-приложений. В рамках данной технологии реализованы мощные средства поддержки графики, отсутствующие в базовых средствах Ajax.
Библиотеки[]
Шаблон:Список примеров
- AJAX.OOP — JavaScript-фреймворк;
- ASP.NET AJAX — библиотека классов JavaScript, библиотека элементов управления для ASP.NET;
- Dojo — многофункциональный JavaScript-инструментарий;
- Extjs — JavaScript-библиотека;
- Google Web Toolkit — инструментарий для Java-разработчиков;
- JsHttpRequest[2] — AJAX-библиотека с поддержкой AJAX-закачки файлов на сервер и многими другими возможностями;
- jQuery — JavaScript-библиотека;
- MooTools — JavaScript-библиотека;
- Prototype — JavaScript-библиотека, также доступная в Ruby on Rails;
- script.aculo.us — JavaScript-библиотека, также доступная в Ruby on Rails;
- xajax — PHP и JavaScript-библиотека;
- ZK Framework — бесплатная библиотека ZK Framework.
См. также[]
- Уязвимости AJAX
- Comet (программирование)
- Web 2.0
- AHAH
- Open Ajax
- WinLIKE
Примечания[]
Литература[]
- Б. Маклафлин. Изучаем Ajax = Head Rush Ajax. — СПб.: Питер, 2007. — ISBN 978-5-91180-322-3. (см. ISBN )
- Стивен Хольцнер. Ajax Библия программиста = Ajax Bible. — М.: Диалектика, 2009. — С. 553. — ISBN 978-5-8459-1502-3. (см. ISBN )
- Дейв Крейн, Бер Бибо, Джордон Сонневельд. Ajax на практике = Ajax in Practice. — М.: Вильямс, 2007. — ISBN 978-5-8459-1327-2. (см. ISBN )
- Дэниел Вулстон. Ajax и платформа .NET 2.0 для профессионалов = Pro Ajax and the .NET 2.0 Platform. — М.: Вильямс, 2007. — С. 464. — ISBN 1-59059-670-6. (см. ISBN )
- Дейв Крейн, Эрик Паскарелло, Даррен Джеймс. AJAX в действии: технология — Asynchronous JavaScript and XML = Ajax in Action. — М.: Вильямс, 2006. — С. 640. — ISBN 1-932394-61-3. (см. ISBN )
Ссылки[]
- AJAX: С чего начать — перевод статьи с developer.mozilla.org, в которой доходчиво объясняется, как написать первое AJAX-приложение.
- Ajax в деталях — цикл статей на сайте javascript.ru
- Освоение Ajax — цикл статей на сайте IBM, посвящённый изучению AJAX.
- Перевод статьи «Новый подход к веб-приложениям»
- Модель Ajax
- Основы работы с Ajax
- Страница 0 - краткая статья
- Страница 1 - энциклопедическая статья
- Разное - на страницах: 2 , 3 , 4 , 5
- Прошу вносить вашу информацию в «AJAX 1», чтобы сохранить ее
Комментарии читателей:[]
|