Ajax: xmlhttp и XMLHttpRequest

Ajax - это результат естественного развития функциональных возможностей приложений стороны клиента. Разработка сайтов с использованием технологии Ajax давно и прочно вошла в жизнь веб студий. Если бы даже Гарретт и не поместил в один термин всю концепцию, то шансы, что это сделает кто-то другой, были велики; бурного роста интереса веб-разработчиков к комбинированию технологий было уже не избежать.

На заре Всемирной паутины вся функциональность приложения располагалась на сервере. Компания Netscape предложила язык написания сценариев на стороне клиента - JavaScript, который принес некоторую интерактивность стороне клиента, но веб-страницы по-прежнему оставались статичными. Браузеры, последовавшие этому примеру, такие как Microsoft Internet Explorer (IE), имели свои собственные реализации языка сценариев, что постепенно привело к попыткам стандартизировать языки написания сценариев, результатом чего стал стандарт ECMAScript.

Однако веб-страницы не стали динамичнее, и с помощью сценариев нельзя было изменять, перемещать, скрывать, создавать и удалять отдельные элементы веб-страницы, пока не была разработана спецификация консорциума W3C для DOM и CSS. В то же время динамическим эффектам веб-страницы было дано название динамический HTML, или DHTML- технология, которая теперь вошла в состав Ajax. Вместе с развитием языков сценариев предпринимались также попытки создать такой язык разметки, который бы не зависел от какой-либо определенной лексики и развитие которого не приводило бы к невозможности реализации. Результат, XML, был представлен в 1998 году.

С этого момента прогрессировать начали разные направления, и мы вошли в эру увеличения функциональных возможностей. Подобное расхождение привело к появлению кроссбраузерной несовместимости, которая в той или иной степени сохраняется до сих пор. Среди объектов браузера был один, который впоследствии стал "душой и сердцем" Ajax, - ActiveX-объект браузера Microsoft IE 5, Microsoft.xmlhttp. Он мог остаться очередным специфическим объектом браузера IE, но идея привлекла внимание других разработчиков браузеров, и компания Mozilla создала свой вариант, названный XMLHttpRequest.

Особенность объекта XMLHttpRequest в том, что он позволяет пользователю получать асинхронный доступ к веб-сервисам прямо внутри страницы. Вместо того, чтобы отправлять на сервер данные формы и затем выводить результаты на отдельную страницу, XMLHttpRequest активизирует какую-либо серверную функцию и выводит результат без перезагрузки страницы. Асинхронный запрос означает, что страница не будет заблокирована на время, пока запрос обрабатывается сервером. Гарретт также упомянул об использовании XSLT, который может быть объединен с XML для того, чтобы представить результаты запросов к веб-сервисам. Однако более популярным подходом является использование в добавление к XML модели DOM и новой системы обозначений объектов, такой как JSON (JavaScript Object Notation), чтобы манипулировать элементами страницы, а также результатами запроса к сервисам.

Итак, развитие функциональности веб-страницы вело нас от простой статичной страницы ко всем функциональным возможностям, которые на сегодняшний день поддерживаются Ajax, со следующими остановками на этом пути:

  • статичные веб-страницы с HTML-форматированием;
  • интерактивность с помощью языка JavaScript и его вариаций (JScript);
  • отделение с помощью каскадных таблиц стилей (CSS) структуры и содержания документа от его представления пользователю;
  • динамическое манипулирование элементами страницы посредством языков написания сценария;
  • гибкая разметка, предоставляемая языком XML;
  • запросы к веб-сервисам и внутристраничная обработка данных посредством XML.