Технология AJAX (Asynchronous JavaScript and XML) - это способ создания быстрых и динамичных веб-страниц. AJAX позволяет обновлять веб-страницы асинхронно, обмениваясь небольшими объемами данных с сервером в фоновом режиме. Это означает, что можно обновлять части веб-страницы без перезагрузки всей страницы.
AJAX используется для решения следующих задач:
Ключевым элементом AJAX является объект DOM - XMLHttpRequest.
Все современные браузеры поддерживают этот объект.
Этот бъект (XMLHttpRequest) использоваться для обмена данными с веб-сервером в фоновом режиме.
Пример:
По соображениям безопасности современные браузеры не разрешают доступ из разных доменов.
Это означает, что и веб-страница, и файл, который она пытается загрузить, должны быть расположены на одном сервере (в одном домене).
abort()
Отменяет текущий запрос.
getAllResponseHeaders()
Возвращает полный набор заголовков HTTP в виде строки.
getResponseHeader( headerName )
Возвращает значение указанного HTTP-заголовка.
open( method, URL )
open( method, URL, async )
open( method, URL, async, userName )
open( method, URL, async, userName, password )
Указывает метод, URL и другие необязательные атрибуты запроса.
Параметр method может иметь значение «GET», «POST» или «HEAD». Могут быть и другие HTTP-методы, такие как «PUT» и «DELETE» (в основном используемые в приложениях REST).
Параметр «async» указывает, следует ли обрабатывать запрос асинхронно или нет. «true» означает, что обработка сценария продолжается после метода send (), не дожидаясь ответа, а «false» означает, что скрипт ожидает ответа до продолжения обработки скрипта.
send( content )
Отправляет запрос.
setRequestHeader( label, value )
Добавляет пару label / value в HTTP-заголовок, который нужно отправить.
Свойство XMLHttpRequest.readyState возвращает состояние, в котором находится клиент XMLHttpRequest. Клиент существует в одном из следующих состояний:
Значение | Состояние | Описание |
0 | UNSENT | Клиент создан. open () еще не вызыван. |
1 | OPENED | open() вызван. |
2 | HEADERS_RECEIVED | send () был вызван, заголовки и статус доступны. |
3 | LOADING | Загрузка; responseText содержит частичные данные. |
4 | DONE | Операция завершена. |
Имена состояний в Internet Explorer различны. Вместо UNSENT, OPENED, HEADERS_RECEIVED, LOADING и DONE используются имена READYSTATE_UNINITIALIZED (0), READYSTATE_LOADING (1), READYSTATE_LOADED (2), READYSTATE_INTERACTIVE (3) и READYSTATE_COMPLETE (4).
onreadystatechange
Обработчик событий который срабатывает при любом изменении состояния.
responseText
Возвращает ответ как текстовую строку.
responseXML
Возвращает ответ как XML. Это свойство возвращает DOM - объект XML, который может быть проанализирован и проанализирован с использованием методов и свойств W3C DOM.
status
Возвращает статус как число (например, 404 для «Не найдено» и 200 для «ОК»).
statusText
Возвращает статус как строку (например, «Не найдено» или «ОК»).
Чтобы отправить запрос на сервер, используются методы open () и send () объекта XMLHttpRequest:
xhttp.open ("GET", "ajax_info.txt", true);
xhttp.send ();
Метод | Описание |
---|---|
open(method, url, async) | Создаёт запрос method: тип запроса: GET или POST url: расположение сервера (файла) async: true (асинхронный) или false (синхронный) |
send() | Отправляет запрос на сервер (используется для GET) |
send(string) | Отправляет запрос на сервер (используется для POST) |
GET проще и быстрее, чем POST, и может использоваться в большинстве случаев.
POST-запросы используются, если:
Чтение файла с сервера
проверяет, завершена ли передача данных (XMLHttpRequest.DONE) и завершена успешно (status === 200)
если - да, то свойство responseText прописывается в DIV с ID="outdiv"
если - нет, то в этот DIV прописывается сообщение об ошибке