Метод XMLHttpRequest.send()
отправляет запрос. Если запрос асинхронный (каким он является по-умолчанию), то возврат из данного метода происходит сразу после отправления запроса. Если запрос синхронный, то метод возвращает управление только после получения ответа. Метод send()
принимает необязательные аргументы в тело запросов. Если метод запроса GET
или HEAD
, то аргументы игнорируются и тело запроса устанавливается в null.
Если заголовок Accept
не был задан с помощью setRequestHeader()
, будет отправлено значение Accept
по-умолчанию */*
.
Синтаксис
XMLHttpRequest.send(body)
Параметры
-
body Необязательный
-
Данные из параметра body оправляются в запросе через XHR. Это могут быть:
Document
, и в этом случае данные будут сериализованы перед отправкой.BodyInit
, которые, согласно спецификации Fetch могут быть:Blob
,BufferSource
,FormData
,URLSearchParams
,ReadableStream
, или объектомUSVString
.
Лучший способ передать двоичные данные (например при загрузке файлов) - это использование ArrayBufferView или Blobs в сочетании с методомsend()
.
Если никакого значения не определено в качестве body, то будет использовано значение по-умолчанию: null
.
Возвращаемое значение
undefined
.
Исключения
Исключение | Описание |
---|---|
InvalidStateError |
send() уже был вызван для запроса, и/или запрос завершен. |
NetworkError |
Тип запрошенного ресурса - Blob, но метод запроса не GET . |
Пример: GET
var xhr = new XMLHttpRequest(); xhr.open('GET', '/server', true); xhr.onload = function () { // Запрос завершен. Здесь можно обрабатывать результат. }; xhr.send(null); // xhr.send('string');
//xhr.send(new Blob()); // xhr.send(new Int8Array()); // xhr.send({ form: 'data' }); // xhr.send(document);
Пример: POST
var xhr = new XMLHttpRequest(); xhr.open("POST", '/server', true); //Передает правильный заголовок в запросе xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); xhr.onreadystatechange = function() {//Вызывает функцию при смене состояния. if(xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200) { // Запрос завершен. Здесь можно обрабатывать результат. } } xhr.send("foo=bar&lorem=ipsum"); // xhr.send('string');
//xhr.send(new Blob()); // xhr.send(new Int8Array()); // xhr.send({ form: 'data' }); // xhr.send(document);
Спецификации
Спецификация | Статус | Комментарий |
---|---|---|
XMLHttpRequest Определение 'send()' в этой спецификации. |
Живой стандарт | WHATWG living standard |
Поддержка браузерами
Возможность | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Базовая поддержка | 1 | (Да) | 1.0 (1.7 или ранее) | 5[1] 7 |
(Да) | 1.2 |
send(ArrayBuffer) |
9 | (Да) | 9.0 (9.0) | 10 | 11.60 | ? |
send(ArrayBufferView) |
22 | ? | 20.0 (20.0) | ? | ? | ? |
send(Blob) |
7 | (Да) | 3.6 (1.9.2) | 10 | 12 | ? |
send(FormData) |
6 | (Да) | 4.0 (2.0) | 10 | 12 | ? |
send(URLSearchParams) |
59 | ? | 44.0 (44.0) | ? | ? | ? |
Возможность | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Базовая поддержка | ? | 1 | (Да) | (Да) | ? | ? | ? |
send(ArrayBuffer) |
? | ? | ? | ? | ? | ? | ? |
send(ArrayBufferView) |
? | ? | ? | ? | ? | ? | ? |
send(Blob) |
? | ? | ? | ? | ? | ? | ? |
send(FormData) |
? | ? | ? | ? | ? | ? | ? |
send(URLSearchParams) |
? | 59 | ? | 44.0 (44.0) | ? | ? | ? |
[1] Возможность реализуется с помощью ActiveXObject()
. Начиная с версии 7 Internet Explorer реализует стандарт XMLHttpRequest
.