XMLHttpRequest(AJAX)¶
AJAX - Asynchronous Javascript and XML - асинхронный JavaScript и XML
Способ загрузки данных, асинхронно - без полного обновления страницы.
var request = new XMLHttpRequest();
request.open("GET", "ajax.php?input=" + input);
request.send();
request.onreadystatechange = function() {
if (request.readyState == 4 && request.status == 200)
processResult(request.responseText);
}
- class
XMLHttpRequest
¶ Наследник
EventTarget
Объект для работы с HTTP-запросами.
Несмотря на название умеет работать с любыми типами данных, не только с XML.
var xhr = new XMLHttpRequest();
-
onabort
¶ Вызывается при прерывании запроса.
-
onerror
¶ Вызывается в случае завершения запроса по ошибке. Обратите внимание, что HTTP-коды состояния, такие как 404, не считаются ошибкой, поскольку сам ответ получен успешно. Однако это событие может породить отрицательный ответсервера DNS или бесконечный цикл переа дресаций.
-
onload
¶ Вызывается при успешном выполнении запроса. В обработчик передается
XMLHttpRequestProgressEvent
xhr.onload = function(evt){};
-
onloadend
¶ Вызывается в случае успешного или неудачного завершения запроса, после событий «load», «abort», «error» и «timeout».
-
onloadstart
¶ Вызывается с началом выполнения запроса.
-
onprogress
¶ Вызывается периодически (примерно раз в 50 миллисекунд) в ходе загрузки тела ответа.
-
onreadystatechange
¶ Вызывается при изменении значения свойства readyState. Наиболее важен для обработки ситуации завершения запроса.
xhr.onreadystatechange = function(){ if (xhr.readyState == 4) ... }
-
ontimeout
¶ Вызывается, если истекло время ожидания, определяемое свойством timeout, а ответ так и не был принят.
-
readyState
¶ Состояние HTTP-запроса. В момент создания объекта XMLHttpRequest это свойство приобретает значение 0, а к моменту получения полного HTTP-ответа это значение возрастает до 4. Возможные значения свойства определяют константы, перечисленные выше.
Значение свойства readyState может уменьшаться, только если в процессе выполнения запроса был вызван метод abort() или open().
Теоретически при каждом изменении значения этого свойства должен вызываться обработчик события onreadystatechange. Однако на практике событие гарантированно возникает, только когда свойство readyState получает значение 4. (События «progress», введенные спецификацией XHR2, обеспечивают более надежный способ слежения за ходом выполнения запроса.)
XMLHttpRequest.UNSENT = 0, Начальное состояние. Объект XMLHttpRequest только что создан или сброшен в исходное состояние вызовом метода abort().
XMLHttpRequest.OPENED = 1, Метод open() уже вызван, но обращения к методу send() еще не было. Запрос еще неотправлен.
XMLHttpRequest.HEADERS_RECEIVED = 2, Вызван метод send() и приняты заголовки ответа, но тело ответа еще не принято.
XMLHttpRequest.LOADING = 3, Начат прием тела ответа, но прием еще не завершился.
XMLHttpRequest.DONE = 4, HTTP-ответ принят полностью или прием был остановлен из-за ошибки.
-
response
¶ В спецификации XHR2 это свойство хранит ответ сервера. Тип свойства зависит от значения свойства responseType. Если responseType содержит пустую строку или строку «text», данное свойство содержит тело ответа в виде строки. Если responseType содержит строку «document», значением данного свойства будет объект Document, полученный в результате разбора XML- или HTML-документа в теле ответа.
Если responseType содержит строку «arraybuffer», значением данного свойства будет объект ArrayBuffer, представляющий двоичные данные в теле ответа. А еслиresponseType содержит строку «blob», значением данного свойства будет объект Blob, представляющий двоичные данные в теле ответа.
-
responseText
¶ Если значение свойства readyState меньше 3, данное свойство будет содержать пустую строку. Если значение свойства readyState равно 3, данное свойство возвращает часть ответа, которая была принята к текущему моменту. Если значение свойства readyState равно 4, это свойство содержит полное тело ответа.
Если в ответе имеется заголовок, определяющий кодировку символов в теле ответа, используется эта кодировка, в противном случае предполагается кодировка UTF-8.
-
responseType
¶ В спецификации XHR2 это свойство определяет тип ответа и тип свойства response. Допустимыми значениями являются «text», «document», «arraybuffer» и «blob». Значением по умолчанию является пустая строка, которая также является синонимом значения «text». Если установить это свойство вручную, последующие попытки обратиться к свойствам responseText и responseXML будут возбуждать исключения и для получения ответа сервера необходимо будет использовать свойство response, предусмотренное спецификацией XHR2.
-
responseXML
¶ Ответ на запрос, который интерпретируется как XML- или HTML-документ и возвращается в виде объекта Document. Это свойство будет иметь значение null, если тело ответа еще не получено или оно не является допустимым XML или HTML-документом.
-
status
¶ HTTP-код состояния, полученный от сервера, такой как 200 – в случае успеха, 404 – в случае ошибки отсутствия документа или 0 – если сервер еще не прислалкод состояния.
-
statusText
¶ Это свойство содержит текст, соответствующий HTTP-коду состояния в ответе. То есть, когда свойство status имеет значение 200, это свойство содержит строку «OK», а когда 404 – строку «Not Found». Это свойство содержит пустую строку, если сервер еще не прислал код состояния.
-
timeout
¶ Свойство, введенное спецификацией XHR2, определяющее предельное время ожидания ответа в миллисекундах. Если выполнение HTTP-запроса займет больше времени, чем указано в данном свойстве, он будет прерван и будет сгенерировано событие «timeout». Это свойство можно установить только после вызова метода open() и перед вызовом метода send().
xhr.timeout = 10000;
-
upload
¶ Свойство, введенное спецификацией XHR2, ссылающееся на объект XMLHttpRequestUpload, который определяет набор свойств регистрации обработчиков событий для слежения за процессом выгрузки тела HTTP-запроса.
-
withCredentials
¶ Свойство, введенное спецификацией XHR2, определяющее необходимость аутентификации при выполнении междоменного CORS-запроса и необходимость обработки заголовков cookie в CORS-ответах. По умолчанию имеет значение false.
-
abort
()¶ Возвращает объект XMLHttpRequest в исходное состояние, соответствующее значению 0 в свойстве readyState, и отменяет любые запланированные сетевые взаимодействия. Этот метод может потребоваться, например, если запрос выполняется слишком долго и надобность в получении ответа уже отпала.
-
getAllResponseHeaders
()¶ Возвращает все HTTP-заголовки ответа (с отфильтрованными заголовками cookie и CORS), полученные от сервера, или null, если заголовки еще не были получены. Заголовки cookie и CORS отфильтровываются и не могут быть получены. Заголовки возвращаются в виде единственной строки и отделяются друг от друга комбинаци ей символов rn.
-
getResponseHeader
(string header)¶ Возвращает значение указанного заголовка header в HTTP-ответе или null, если заголовки вообще не были получены или если ответ не содержит требуемого заголовка header. Заголовки cookie и CORS отфильтровываются, и их нет смысла запрашивать. Если было принято несколько заголовков с указанным именем, значенияэтих заголовков объединяются в одну строку через запятую и пробел.
-
open
(string method, string url[, boolean async, string user, string pass])¶ Этот метод инициализирует объект XMLHttpRequest и сохраняет свои аргументы для последующего использования методом send().
Аргумент method определяет HTTP-метод, используемый для отправки запроса. Среди наиболее устоявшихся методов можно назвать GET, POST и HEAD. Реализации могут также поддерживать методы CONNECT, DELETE, OPTIONS, PUT,TRACE и TRACK.
Аргумент url определяет URL-адрес, который является предметом запроса. Разрешение относительных URL-адресов производится обычным образом с использованием URL-адреса документа со сценарием. Политика общего происхождения требует, чтобы данный URL-адрес содержал те же имя хоста и номерпорта, что и документ со сценарием, выполняющим запрос. Объект XHR2 позволяет выполнять междоменные запросы к серверам, поддерживающим заголовки CORS.
Если аргумент async указан и имеет значение false, запрос будет выполняться в синхронном режиме, и последующий вызов send() заблокирует работу сценария, пока ответ не будет получен полностью. Синхронные запросы рекомендуется использовать только в фоновых потоках выполнения.
Необязательные аргументы user и pass определяют имя пользователя и пароль для HTTP-запроса.
xhr.open('GET', 'data.json', false);
-
overrideMimeType
(string mime)¶ Этот метод позволяет указать, что ответ сервера должен интерпретироваться в соответствии с указанным MIME-типом mime (и параметром charset, если он указан в определении типа mime), без учета значения заголовка Content-Type в ответе.
-
send
(any body)¶ Инициирует выполнение HTTP-запроса. Если перед этим не вызывался метод open() или, обобщенно, если значение свойства readyState не равно 1, метод send() возбуждает исключение. В противном случае он начинает выполнение HTTP-запроса,
Если в предшествующем вызове метода open() аргумент async имел значение false, данный метод блокируется и не возвращает управление, пока значение свойства readyState не станет равно 4 и ответ сервера не будет получен полностью. В противном случае метод send() немедленно возвращает управление, а ответ сервера обрабатывается асинхронно, с помощью обработчиков событий.
xhr.send()
-
setRequestHeader
(string name, string value)¶ Определяет HTTP-заголовок с именем name и значением value, который долженбыть включен в запрос, передаваемый последующим вызовом метода send(). Этот метод может вызываться, только когда свойство readyState имеет значение 1, т. е. после вызова метода open(), но перед вызовом метода send().
Если заголовок с именем name уже был определен, новым значением заголовка станет прежнее значение заголовка плюс запятая с пробелом и новое значение value,переданное методу.
Если методу open() была передана информация об авторизации, объект XMLHttpRequest автоматически добавит заголовок Authorization. Однако этот заголовок может быть также добавлен методом setRequestHeader().
Объект XMLHttpRequest автоматически устанавливает заголовки «Content-Length», «Date», «Referer» и «User-Agent» и не позволяет изменять их значения.
-