Термин AJAX расшифровывается как Asynchronous JavaScript and XML, то есть асинхронный JavaScript и XML. Веб-страница, загруженная на компьютер пользователя, содержит программу на языке JavaScript, которая в зависимости от действий пользователя, формирует определенный запрос и посылает его в интернет на сервер, на котором расположен сайт. На сервере запрос обрабатывается и посылается ответ, который принимается той же программой на JavaScript. Запросы и ответы могут посылаться в структурированном виде, оформленными на языке XML, который является сводом правил для хранения структурированных данных.
В действительности часто запросы и ответы посылаются в произвольном виде, без использования XML, но все равно принято называть используемую технологию термином AJAX. Главное в том, что взаимодействие с сервером ведется в асинхронном режиме, то есть запросы и ответы пересылаются не вместе со сменой веб-страниц, а отдельно, в фоновом режиме. При этом пользователь иногда может и не знать, что был выполнен запрос, так как внешне все может выглядеть точно так же, как и при простом выполнении сценария на текущей странице.
Чтобы понять, что это за технология, можно рассмотреть простой пример AJAX. При первоначальной загрузке страницы пользователь видит какие-то тексты и изображения. Щелкнув мышью на соответствующей ссылке, он инициирует отправку запроса на сервер. После того, как будет получен ответ, некоторые элементы страницы изменятся, при этом страница не будет загружена и нарисована заново, как при использовании традиционной технологии.
С использованием AJAX можно создавать интерактивные веб-страницы, некоторые части которых меняются в ответ на действия пользователя. Вместе с тем популярность AJAX в последнее время нередко приводит к неоправданному ее использованию. В настоящее время имеется множество библиотек JavaScript, облегчающих построение AJAX-приложений, так что для включения асинхронного вызова в страницу не требуется больших усилий. Вместе с тем размер страницы заметно увеличивается, ведь кроме кода HTML требуется загрузить достаточно большие программы на языке JavaScript.
Следует сравнивать объем загружаемой информации при асинхронных запросах и размер программ для поддержки AJAX. Нередко все варианты ответов с сервера занимают меньше места, чем необходимая программа. В таком случае лучше загрузить все необходимые варианты вместе с загрузкой страницы и пользоваться обычными программами на JavaScript, без использования асинхронных вызовов. Если же объем данных достаточно велик, предпочтение следует отдать технологии AJAX. Например, в еще одном примере AJAX идет обращение к базе данных населенных пунктов РФ. Всего в этой базе содержится около 180000 записей, и она даже в упакованном виде занимает несколько мегабайт. Очевидно, что загрузить такую базу целиком не представляется разумным выбором. Вместе с загрузкой страницы загружаются только названия регионов, которых не так много. Выбирая регион или район, пользователь отсылает запрос на сервер, а тот в ответ посылает список районов или населенных пунктов. В данном случае применение асинхронного взаимодействия вполне оправдано.
Иногда трудно определить, следует ли использовать AJAX или обойтись традиционными методами. Может вы заметили, что на сайте, на котором расположены описанные выше примеры, имеется средство поиска. Оно тоже использует технологию AJAX, и при вводе поискового запроса страница не перерисовывается, а запрос отправляется на сервер в фоновом режиме. Три найденных ответа выводятся рядом с полем запроса, а если найдено больше страниц, выводится ссылка на отдельную страницу результатов поиска. С одной стороны, такой поиск удобнее традиционного, но если пользователь ничего не ищет на сайте, ему все равно загружаются необходимые программы на JavaScript. Если время загрузки страниц сайта достаточно важно, следует отказаться от AJAX-поиска и реализовать традиционный, с переходом на отдельную страницу результатов. Кстати, можно усовершенствовать поиск, чтобы запрос на сервер посылался при вводе каждой буквы, а сервер возвращал подходящие варианты. Хотя это и несколько повысит удобство поиска на сайте, одновременно резко возрастет нагрузка на сервер и каналы связи, так что вряд ли такая возможность действительно необходима.
Технология AJAX позволяет создавать удобные интерактивные сайты, но нельзя переоценивать ее возможности. Далеко не всегда оправдано асинхронное взаимодействие с сервером, нередко лучше использовать традиционные технологии. Вместе с тем полностью отказываться от AJAX также неверно, так как действительно современные и сложные сайты вряд ли можно создать без этой прогрессивной технологии.