Наука
Регистрация
Advertisement


AJAX, Ajax (ˈeɪdʒæks, от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML») — подход к построению интерактивных пользовательских интерфейсов веб-приложений, заключающийся в «фоновом» обмене данными браузера с веб-сервером. В результате, при обновлении данных веб-страница не перезагружается полностью, и веб-приложения становятся быстрее и удобнее.

Ajax-model-ru

Модель классических приложений для сети (слева) в прямом сравнении с применением Ajax (справа).

По-английски AJAX произносится как «э́йджэкс», по-русски довольно распространено «ая́кс».


Технология[]

AJAX — не самостоятельная технология, а концепция использования нескольких смежных технологий. AJAX базируется на двух основных принципах:

  • использование технологии динамического обращения к серверу «на лету», без перезагрузки всей страницы полностью, например:
  • с использованием XMLHttpRequest (основной объект);
  • через динамическое создание дочерних фреймов[1];
  • через динамическое создание тега <script>[2].
  • через динамическое создание тега <img>, как это реализовано в google analytics.
  • использование 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;
  • xajaxPHP и 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 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 )

Ссылки[]


  1. Википедия AJAX адрес
  2. Викисловарьадрес
  3. Викицитатникадрес
  4. Викиучебникадрес
  5. Викитекаадрес
  6. Викиновостиадрес
  7. Викиверситетадрес
  8. Викигидадрес

Выделить AJAX и найти в:

  1. Вокруг света адрес
  2. Академик адрес
  3. Астронет адрес
  4. Элементы адрес
  5. Научная Россия адрес
  6. Кругосвет адрес
  7. Научная Сеть
  8. Традицияадрес
  9. Циклопедияадрес
  10. Викизнаниеадрес
  1. Google
  2. Bing
  3. Yahoo
  4. Яндекс
  5. Mail.ru
  6. Рамблер
  7. Нигма.РФ
  8. Спутник
  9. Google Scholar
  10. Апорт
  11. Онлайн-переводчик
  12. Архив Интернета
  13. Научно-популярные фильмы на Яндексе
  14. Документальные фильмы
  1. Список ru-вики
  2. Вики-сайты на русском языке
  3. Список крупных русскоязычных википроектов
  4. Каталог wiki-сайтов
  5. Русскоязычные wiki-проекты
  6. Викизнание:Каталог wiki-сайтов
  7. Научно-популярные сайты в Интернете
  8. Лучшие научные сайты на нашем портале
  9. Лучшие научно-популярные сайты
  10. Каталог научно-познавательных сайтов
  11. НАУКА В РУНЕТЕ: каталог научных и научно-популярных сайтов

  • Страница 0 - краткая статья
  • Страница 1 - энциклопедическая статья
  • Разное - на страницах: 2 , 3 , 4 , 5
  • Прошу вносить вашу информацию в «AJAX 1», чтобы сохранить ее

Комментарии читателей:[]

Advertisement