Инициирует выполнение HTTP-запроса. Если перед этим не вызывался метод
ореn
или, обобщенно, если значение свойства
readyState
не равно 1, метод
send
возбуждает исключение. В противном случае он начинает выполнение НТТР-запроса, который состоит из:
• НТТР-метода, URL-адреса и информации об авторизации (если необходимо), определенных предшествующим вызовом метода
ореn
;
• заголовков запроса, если они были определены предшествующим вызовом метода
setRequestHeader
;
• значения аргумента body, переданного данному
методу. Аргумент body может быть строкой, объектом
Document
, образующим тело запроса; он может быть опущен или иметь значение null, если запрос не имеет тела (например, GET-запросы вообще не имеют тела). Согласно спецификации XHR2 телом запроса также могут быть объекты
ArrayBuffer, Blob и FormData
.
Если в предшествующем вызове метода
ореn
аргумент async имел значение false, данный метод блокируется и не возвращает управление, пока значение свойства
readyState
не станет равно 4 и ответ сервера не будет получен полностью. В противном случае метод
send
немедленно возвращает управление, а ответ сервера обрабатывается асинхронно, с помощью обработчиков событий.
void setRequestHeader(string name, string value)
Определяет HTTP-заголовок с именем name и значением value, который должен быть включен в запрос, передаваемый последующим вызовом метода
send.
Этот метод может вызываться, только когда свойство
readyState
имеет значение 1, т.е. после вызова метода
ореn,
но перед вызовом метода
send.
Если заголовок с именем пате уже был определен, новым значением заголовка станет прежнее значение заголовка плюс запятая с пробелом и новое значение value, переданное методу.
Если методу open была передана информация об авторизации, объект
XMLHttp
– Request автоматически добавит заголовок Authorization. Однако этот заголовок может быть также добавлен методом
setRequestHeader.
Объект
XMLHttpRequest
автоматически устанавливает заголовки «Content-Length», «Date», «Referer» и «User-Agent» и не позволяет изменять их значения. Существует еще несколько заголовков, включая заголовки, имеющие отношение к cookies, которые нельзя установить с помощью этого метода. Полный их список приводится в разделе 18.1.
Обработчики событий
Оригинальный объект
XMLHttpRequest
определяет только одно свойство регистрации обработчика событий:
onreadystatechange
. Спецификация XHR2 дополняет этот список множеством обработчиков событий хода выполнения запроса, которые намного проще в использовании. Зарегистрировать обработчики можно с помощью свойств, перечисленных ниже, или с помощью методов интерфейса
EventTarget
. События, возникающие в объекте
XMLHttpRequest
, всегда доставляются самому объекту
XMLHttpRequest
. Они не всплывают и не предусматривают действий по умолчанию, которые можно было бы отменить. Обработчикам событий «readystatechange» передается объект Event, а обработчикам остальных событий - объект
ProgressEvent
.
См. также описание свойства upload и
XMLHttpRequestUpload
, где приводится список событий, которые можно использовать для слежения за ходом выгрузки тела НТТР-запроса.
onabort
Вызывается
при прерывании запроса.
onerror
Вызывается в случае завершения запроса по ошибке. Обратите внимание, что HTTP-коды состояния, такие как 404, не считаются ошибкой, поскольку сам ответ получен успешно. Однако это событие может породить отрицательный ответ сервера DNS или бесконечный цикл переадресаций.
onload
Вызывается при успешном выполнении запроса.
onloadend
Вызывается в случае успешного или неудачного завершения запроса, после событий «load», «abort», «error» и «timeout».
onloadstart
Вызывается с началом выполнения запроса.
onprogress
Вызывается периодически (примерно раз в 50 миллисекунд) в ходе загрузки тела ответа.
onreadystatechange
Вызывается при изменении значения свойства
readyState
. Наиболее важен для обработки ситуации завершения запроса.
ontimeout
Вызывается, если истекло время ожидания, определяемое свойством timeout, а ответ так и не был принят.
XMLHttpRequestUpload
(EventTarget)
Объект
XMLHttpRequestUpload
определяет множество свойств регистрации обработчиков событий для слежения за ходом выгрузки тела HTTP-запроса. В броузерах, реализующих положения спецификации «XMLHttpRequest Level 2», каждый объект
XMLHttpRequest
имеет свойство
upload
, ссылающееся на объект этого типа. Чтобы реализовать слежение за ходом выполнения операции выгрузки, достаточно просто установить соответствующие обработчики событий с помощью следующих свойств или методов интерфейса
EventTarget
. Обратите внимание, что перечисленные ниже свойства регистрации обработчиков событий для слежения за процессом выгрузки в точности соответствуют свойствам регистрации обработчиков событий для слежения за процессом загрузки, которые определяются самим объектом
XMLHttpRequest
, за исключением свойства
onreadystatechange
.
Обработчики событий
onabort
Вызывается при прерывании выгрузки.
onerror
Вызывается, когда в процессе выгрузки возникает сетевая ошибка.
onload
Вызывается в случае успешного завершения выгрузки
onloadend
Вызывается в случае успешного или неудачного завершения выгрузки. Событие «loadend» всегда следует за событиями «load», «abort», «error» и «timeout».
onloadstart
Вызывается с началом выгрузки.
onprogress
Вызывается периодически (примерно раз в 50 миллисекунд) в ходе выгрузки.
ontimeout
Вызывается, если истекло время ожидания, определяемое свойством