Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #67, ИЮНЬ 2006 г.

созидательная сила AJAX

ALEXEY SHOCKOV

Спецвыпуск: Хакер, номер #067, стр. 067-052-4


PHP — очень распространенный в силу своей быстроты и легкости язык для web-программирования. Библиотека Subsys_JsHttpRequest выгодно отличается от конкурентов кроссбраузерностью. В зависимости от конкретного браузера, библиотека выбирает метод передачи данных и гарантирует доставку данных пользователю практически в любой ситуации.

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

[авторизация «не отходя от кассы»]

Для начала рассмотрим frontend нашей программы, то есть ту страницу, которую увидит пользователь. Из-за примитивности HTML-верстки мы не будем обращать на нее внимания, разберемся с JavaScript’ом. Первым делом подключим библиотеку, как показано ниже.

<script language="JavaScript" src="lib/Subsys/JsHttpRequest/Js.js"></script>

Далее следует всего одна функция checkUser, вызов которой происходит при отправке формы на сервер. Здесь сосредоточена вся работа по подготовке запроса к серверу, собственно запроса и обработке результатов.

Составление запроса происходит путем формирования массива из элементов формы, в нашем случае это user и pass. После создания объекта Subsys_JsHttpRequest_Js, который и отвечает за обмен данными, не лишним будет активировать очень полезную функцию кеширования. Кеширование помогает уменьшить нагрузку на сервер не отсылая ему одинаковых запросов, а пользователь тратит меньше времени при работе с нашим приложением.

Запрос можно отправлять на сервер как методом POST, так и методом GET, причем адрес серверного скрипта может уже содержать GET-параметры — на работе Subsys_JsHttpRequest_Js это никак не отразится.

// Get information

var user = '' + document.getElementById('user').value;

var pass = '' + document.getElementById('pass').value;

// Create object

var req = new Subsys_JsHttpRequest_Js();

// Allow cashing queries

req.caching = true;

// Prepare object

req.open('POST', 'load.php', true);

// Send query

req.send({ u: user, p: pass });

Очень хитро проходит обработка ответа сервера. После того как ответ получен, вызывается функция, ссылка на которую содержится в переменной onreadystatechange. Ответ сервера также представляет собой хэш, и он содержится в переменной responseJS. В нашем случае мы просто добавляем сообщение об успешной/неудачной авторизации (в зависимости от значения переменной ответа сервера auth) в блок на странице с идентификатором result.

// After loading data this code are automaticaly called

req.onreadystatechange = function() {

if (req.readyState == 4) {

if (req.responseJS) {

// Put result in <div>

document.getElementById('result').innerText =

Назад на стр. 067-052-3  Содержание  Вперед на стр. 067-052-5