Лабораторная работаПомощь в написанииУзнать стоимостьмоей работы
Здесь мы используем метод GET, хотя можно и POST; в общем виде это выглядет так: request. open (<" GET" |" POST" |…>, ,);. Функцию, являющуюся обработчиком события onreadystatechange (в нашем случае это функция — processRequestChange ()), мы должны определить сами. И, как было сказано выше, объявим дополнительные HTML-элементы (в нашем случае — это невидимые слои) для отображения полученного…Читать ещё >
Кафедра: АСОИиУ Лабораторная Работа На тему: XMLHttpRequest (AJAX)
XMLHttpRequest (AJAX) — отправка и обработка ответов http-запросов с помощью JavaScript
Методы объекта XMLHttpRequest
Все нижеизложанные методы и свойства — общие для Internet Explorer 5, Mozilla, Netscape 7, и соответственно, использовать их можно безопасно.
abort ()
обрывает текущий запрос
getAllResponseHeaders ()
возвращает полный набор заголовков ответа (названий и значений) в виде строки
getResponseHeader ()
возвращает строковое значение заголовка, название которого указано в параметре.
open (, [, [, [, ]]])
Присвоение параметров (метода, URL, и других) текущему запросу.
send ()
Посылает запрос
setRequestHeader (
Свойства объекта XMLHttpRequest
onreadystatechange
событие, возникающее при смене статуса объекта
readyState
значения статуса (integer), может принимать следующие значения: 0 = неинициализирован (uninitialized); 1 = «идет загрузка» (loading); 2 = «загружен» (loaded); 3 = «интерактивен» (interactive) 4 = «выполнен» (complete)
responseText
строка с возвращенными сервером данными
responseXML
DOM-совместимый объект-документ с возвращенными сервером данными
status
стандартный HTTP код статуса, например 404 (для «Not Found») или 200 (для «OK»)
statusText
текстовое сообщение статуса
Здесь все необходимые свойства и методы этого объекта, которые помогут нам решить наш таск. Опишем последовательность наших действий:
Алгоритм:
1. Создание экземпляра объекта XMLHttpRequest.
2. Объявление обработчика события onreadystatechange нашего экземпляра.
3. Открытие соединения с указанием типа запроса, URL и других параметров.
4. Посыл запроса.
Алгоритм незамысловат, но, учитывая кое-какие нюансы (и учитывая, что мы учимся:)), конечно же, рассмотрим его подробней:
Итак, пункт первый — создание экземпляра объекта. Вот здесь всплывает особенность обеспечения кроссбраузерности. Конструкция создания объекта различна: в IE 5+ она реализована через ActiveXObject, а в остальных браузерах (Mozilla, Netscape и Safari) — как встроенный объект типа XMLHttpRequest.
Для Internet Explorer:
var request = new ActiveXObject («Microsoft. XMLHTTP»);
Для всех остальных:
var request = new XMLHttpRequest ();
Таким образом, чтобы обеспечить кроссбраузерность, нужно лишь проверять наличие объектов window. XMLHttpRequest и window. ActiveXObject и применять соответствующий вызов создания экземпляра.
Далее по плану — создание обработчика событий и открытие соединения. Это весьма просто:
Здесь мы используем метод GET, хотя можно и POST; в общем виде это выглядет так: request. open (<" GET" |" POST" |… >, ,);. Функцию, являющуюся обработчиком события onreadystatechange (в нашем случае это функция — processRequestChange ()), мы должны определить сами.
Ну и последний пункт — посыл запроса — метод send () (для версии без ActiveX в качестве параметра нужно передать null).
// для IE
request. send ();
// для остальных
request. send (null);
После запуска метода send () начинает работать вышеуказанный обработчик события onreadystatechange. Собственно, этот обработчик — основная часть программы. В нем обычно перехватываются все возможные коды состояния запроса и вызываются соответствующие действия, а также перехватываются возможные ошибки.
Исходя из всего вышесказанного, JavaScript код будет примерно следущим:
var request;
/**
* Load XMLDoc function
* Здесь в качестве параметра url при вызове мы должны указать
* backend-скрипт, который, собственно, и получит данные с сервера
Обратите внимание на фрагмент, выделенный зеленным цветом — событие onClick кнопки «Поиск». Мы вызываем функцию doLoad (. .), в качестве параметра которой передаем адрес backend-скрипта, выполняющего поиск в базе зарегистрированного пользователя. О backend-скрипе чуть позже, имя его мы определили как ajaxsearch. php. Также GET-параметром скрипту мы передаем переменную search, со значением, взятым из поля ввода для ника.
И, как было сказано выше, объявим дополнительные HTML-элементы (в нашем случае — это невидимые слои) для отображения полученного содержимого и окна загрузки с возможностью отмены:
Ну что ж, с frontend’ом разобрались, переходим к backend’у — скрипт ajaxsearch. php. И вновь мы сталкиваемся с небольшими нюансами: для того, чтобы PHP-скрипт корректно работал с XMLHttpRequest, он (скрипт) должен посылать ряд заголовков. А именно: тип содержимого и его кодировку (особенно важно, если вы работаете с кириллицей), а также параметры кеширования — любое кеширование должно быть отключено (ну это и понятно — необходимо иметь свежую информацию).
И еще одна особенность: если вы будете выводит данные в формате text/plane (в нашем случае — text/html, поэтому нас это не каснется, но все же — чтобы знать), помните, что спецсимволы такие как n, t, r и т. д., обрабатываются по умолчанию только в строках с двойными кавычками:
// т. е. правильно так
print «MessagenFrom AJAX» ;
// а не так!
print 'MessagenFrom AJAX';
Ну и теперь весьма банальный PHP-скрипт получения данных из базы (а банальный, потому что предполагается, что у вас уже есть навыки работы с базами данных в PHP). Вид скрипта следующий (в найденых никах мы подсвечиваем буквы запроса красным цветом и выводим все это в виде таблицы):