Когда существующих возможностей становиться мало, а совершенствовать существующее уже некуда, тогда и происходит технологический прорыв. Таким прорывом и есть AJAX (Asynchronous JavaScript and XML) - подход к построению пользовательских интерфейсов веб-приложений, при котором web-страница, не перезагружаясь, сама догружает нужные пользователю данные. AJAX - один из компонентов концепции DHTML. Что же дает нам эта технология. В настоящее время разработка WEB приложений стремится к разграничению клиентской части и серверной, этим и обуславливается повсеместное использование шаблонов, таких как Smarty и XSLT. Сейчас проекты становятся сложнее, и переплетать между собой различные технологии становиться слишком дорого для времени разработчика. Так, например, все стили форматирования выносятся в CSS или в XSL файлы, HTML или XML данные хранятся в других разделах, серверные обработчики в третьих, базы данных в четвертых. И если еще 5-6 лет назад практически везде можно было увидеть переплетение всего этого в одном файле, то сейчас это все чаще становиться редкостью. При разработке более сложных проектов возникает необходимость в структурированности и удобочитаемости кода. Не следует засорять код программиста кодом верстальщика, а код верстальщика - правками дизайнера, и так далее. Возникает необходимость в разграничении работы. Так, например, дизайнер будет делать свою работу, верстальщик свою, программист свою, и при этом никто друг другу мешать не будет. В итоге каждому участнику проекта достаточно будет знать только те данные, с которыми ему придется работать. В таком случае производительность группы и качество проекта повышается в разы. В настоящее время эта проблема с успехом решается путем использования шаблонов, однако это тоже создает определенные трудности, так как чтобы, скажем, подключить Smarty, необходимо подключить программный модуль обработки шаблонов, и четко связать со структурой проекта. А это далеко не всегда возможно и требует определенных затрат. Немного проще при использовании связки XML + XSL, так как они предоставляют больше возможностей, однако это альтернатива, не более. А что если посмотреть в сторону чего-то радикально нового, что позволяло бы объединить все лучше, используя возможности того, что есть? Попробуйте представить JavaScript, который обладает всем возможностями PHP или Perl, включая работу с графикой и базами данных, который имеет гораздо более удобную расширяемость и практичность, и к тому же кросс-платформен. Так что же такое AJAX? Впервые об Ajax заговорили после появления в феврале 2005-го года статьи Джесси Джеймса Гарретта (Jesse James Garrett) "Новый подход к веб-приложениям". Ajax - это не cамостоятельная технология. Это идея, которая базируется на двух основных принципах. Использование DHTML для динамичного изменения содержания страницы. Использование XMLHttpRequest для обращения к серверу "на лету". Использование этих двух подходов позволяет создавать намного более удобные WEB-интерфейсы пользователя на тех страницах сайтов, где необходимо активное взаимодействие с пользователем. Использование Ajax стало наиболее популярно после того, как компания Google начала активно использовать его при создании своих сайтов, таких как Gmail, Google maps и Google suggest. Создание этих сайтов подтвердило эффективность использования данного подхода. Итак подробнее: если взять классическую модель WEB-приложения: 
Клиент, набирая в строке поиска адрес интересующего его ресурса,
попадая на сервер, делает к нему запрос. Сервер производит вычисления в
соответствии с запросом, обращается к базе данных и так далее, после
чего полученные данные идут клиенту и, в случае необходимости
подставляются в шаблоны и обрабатываются браузером. Результатом
является страница, которую мы видим, и которую 80% населения страны
находящейся в WEB называют Интернетом. Это классическая модель, которая
успела себя зарекомендовать и заслужить себе почетное место под
солнцем. Это самая простая модель взаимодействия и, как следствие,
самая распространенная. Однако ее все чаще становиться недостаточно.
Представьте себе, on-line игру "Морской бой", в которую играют два
закоренелых друга - житель ЮАР и житель Японии. Как с помощью такой
модели сделать их игру максимально приятной? В любом случае данные
потопленных кораблей будут хранится на сервере, и что бы проверить не
походил ли оппонент, необходим будет каждый раз обновлять страницу и
подгущать устаревшие данные. "Но ведь люди придумали кэширование" -
скажете вы и будете абсолютно правы, но легче от этого не становиться.
Кэширование всего лишь ускорит время взаимодействия с сервером, но не
избавит от необходимости перезагружать страницу. Как вариант можно
поставить определенное время самообновления, но и в этом случае
страница будет перезагружаться полностью.
Теперь посмотрим на модель взаимодействия AJAX: 
Последовательность действий клиента сохраняется и он, скорее всего
не поймет того, что будет происходить, а слово AJAX будет
ассоциироваться только с названием футбольного клуба. Но на стороне
сервера все выглядит иначе.
При обращении к серверу, генерируется страница, которая будет
отображаться пользователю, и предлагать ему совершить интересующую его
последовательность действий. При сознательном (хотя и не обязательно)
выборе клиента, его запрос будет обращаться к AJAX модулю, который и
будет производить все интересующие его вычисления и работу с сервером
как таковым. Но в чем же новшество? Основное отличие в том что этот
метод дает нам возможность динамически обращаться к серверу и выполнять
интересующие нас действия. Например, нам нужно выполнить обращение к
базе данных и получить интересующие нас данные которые затем будем
использовать. Данные мы будем хранить в XML файле который будет
формироваться динамически, таким образом:
|