Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #96, ДЕКАБРЬ 2006 г.

Козырные расклады

Борис Вольфсон

Хакер, номер #096, стр. 096-134-1


(borisvolfson@gmail.com, http://splendot.com)

Технология AJAX для создания современных веб-сайтов

В покере есть такая начальная комбинация карт - туз и валет. Ее называют «AJAX». Если она выпадает при раздаче, то шансы на выигрыш очень велики. Существует одноименная компьютерная технология, которая обещает стать козырной картой в колоде любого сайта.

Теория

Вначале - пара слов про технологии, которые мы будем использовать в статье. Чтобы писать полноценные веб-приложения на Аяксе, надо на приличном уровне знать и уметь применять:

список

- язык разметки гипертекста HTML, а лучше XHTML;

- каскадные таблицы стилей CSS;

- объектную модель DOM;

- язык программирования на стороне клиента, обычно JavaScript;

- объект XMLHttpRequest для обмена данными с сервером;

- XML для формирования данных, либо другой формат, например JSON.

Если в вышеперечисленном списке встретились незнакомые слова, то не стоит отчаиваться - я поясню их, когда это понадобится.

Общая схема работы

Пользователь заходит на страничку, сделанную при помощи Аякса, и производит некое действие, например кликает мышкой по ссылке. Обработчик этого события посылает запрос на сервер. Он получает информацию и посылает ответ, который обрабатывает соответствующая функция на стороне клиента. Эта функция формирует готовый HTML и показывает его пользователю. Чтобы представить этот процесс, можно взглянуть на схему.

XMLHttpRequest

Для того чтобы написать наше первое приложение – интерактивную страничку на AJAX, нам надо научиться пользоваться объектом XMLHttpRequest. Что может быть проще, чем создать объект нужного класса? Но вспомним главную беду веб-программистов: у всех пользователей разные браузеры. Microsoft Internet Explorer поддерживает XMLHttpRequest в виде ActiveX-объекта Microsoft.XMLHTTP, остальные же браузеры считают его нативным, и проблем возникнуть не должно. Теперь алгоритм создания объекта XMLHttpRequest прояснен. Сначала определяем браузер, потом создаем объект нужным нам образом:

Создание объекта класса XMLHttpRequest

function createHttpRequest() {

var httpRequest;

var browser = navigator.appName;

if (browser == "Microsoft Internet Explorer") {

httpRequest = new ActiveXObject("Microsoft.XMLHTTP");

} else {

httpRequest = new XMLHttpRequest();

}

return httpRequest;

}

Что умеет делать этот объект? Самой главной функциональностью для нас будет возможность отправлять запросы на сервер и обрабатывать ответы в асинхронном режиме. Нам придется использовать метод установки параметров соединения open и метод отправки запроса send. Также мы будем задействовать свойство onreadystatechange для установки обработчика получения ответа на запрос. Полный список свойств и методов XMLHttpRequest, можно посмотреть в таблицах «Методы класса XMLHttpRequest» и «Свойства класса XMLHttpRequest».

Методы класса XMLHttpRequest

abort() – отменяет текущий запрос;

getAllResponseHeaders() - возвращает полный список HTTP-заголовков в виде строки;

getResponseHeader( headerName ) – возвращает значение указанного заголовка;

open( method, URL, async, userName, password ) – определяет метод, URL и другие опциональные параметры запроса; параметр async определяет, происходит ли работа в асинхронном режиме;

Содержание  Вперед на стр. 096-134-2