--- title: XMLHttpRequest.send() slug: Web/API/XMLHttpRequest/send tags: - AJAX - API - HTTP запрос - XHR - XHR запрос - XMLHttpRequest - send - запрос translation_of: Web/API/XMLHttpRequest/send ---
{{APIRef('XMLHttpRequest')}}
Метод XMLHttpRequest.send()
отправляет запрос. Если запрос асинхронный (каким он является по-умолчанию), то возврат из данного метода происходит сразу после отправления запроса. Если запрос синхронный, то метод возвращает управление только после получения ответа. Метод send()
принимает необязательные аргументы в тело запросов. Если метод запроса GET
или HEAD
, то аргументы игнорируются и тело запроса устанавливается в null.
Если заголовок {{HTTPHeader("Accept")}} не был задан с помощью {{domxref("XMLHttpRequest.setRequestHeader", "setRequestHeader()")}}, будет отправлено значение Accept
по-умолчанию */*
.
XMLHttpRequest.send(body)
body {{optional_inline}}
Данные из параметра body оправляются в запросе через XHR. Это могут быть:
BodyInit
, которые, согласно спецификации Fetch могут быть: {{domxref("Blob")}}, {{domxref("BufferSource")}}, {{domxref("FormData")}}, {{domxref("URLSearchParams")}}, {{domxref("ReadableStream")}}, или объектом {{domxref("USVString")}}.Лучший способ передать двоичные данные (например при загрузке файлов) - это использование ArrayBufferView или Blobs в сочетании с методомsend()
.
Если никакого значения не определено в качестве body, то будет использовано значение по-умолчанию: null
.
undefined
.
Исключение | Описание |
---|---|
InvalidStateError |
send() уже был вызван для запроса, и/или запрос завершен. |
NetworkError |
Тип запрошенного ресурса - Blob, но метод запроса не 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);
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);
Спецификация | Статус | Комментарий |
---|---|---|
{{SpecName('XMLHttpRequest', '#the-send()-method', 'send()')}} | {{Spec2('XMLHttpRequest')}} | WHATWG living standard |
Возможность | Chrome | Edge | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|---|
Базовая поддержка | {{CompatChrome(1)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("1.0")}} | {{CompatIe('5')}}[1] {{CompatIe('7')}} |
{{CompatVersionUnknown}} | {{CompatSafari('1.2')}} |
send(ArrayBuffer) |
{{CompatChrome(9)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("9.0")}} | {{CompatIe('10')}} | {{CompatOpera('11.60')}} | {{compatUnknown}} |
send(ArrayBufferView) |
{{CompatChrome(22)}} | {{CompatUnknown}} | {{CompatGeckoDesktop("20.0")}} | {{compatUnknown}} | {{compatUnknown}} | {{compatUnknown}} |
send(Blob) |
{{CompatChrome(7)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("1.9.2")}} | {{CompatIe('10')}} | {{CompatOpera('12')}} | {{compatUnknown}} |
send(FormData) |
{{CompatChrome(6)}} | {{CompatVersionUnknown}} | {{CompatGeckoDesktop("2.0")}} | {{CompatIe('10')}} | {{CompatOpera('12')}} | {{compatUnknown}} |
send(URLSearchParams) |
{{CompatChrome(59)}} | {{CompatUnknown}} | {{CompatGeckoDesktop("44.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
Возможность | Android Webview | Chrome for Android | Edge | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|---|---|
Базовая поддержка | {{CompatUnknown}} | {{CompatChrome(1)}} | {{CompatVersionUnknown}} | {{CompatVersionUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
send(ArrayBuffer) |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{compatUnknown}} | {{CompatUnknown}} |
send(ArrayBufferView) |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{compatUnknown}} | {{CompatUnknown}} |
send(Blob) |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{compatUnknown}} | {{CompatUnknown}} |
send(FormData) |
{{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} | {{compatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
send(URLSearchParams) |
{{CompatUnknown}} | {{CompatChrome(59)}} | {{CompatUnknown}} | {{CompatGeckoMobile("44.0")}} | {{CompatUnknown}} | {{CompatUnknown}} | {{CompatUnknown}} |
[1] Возможность реализуется с помощью ActiveXObject()
. Начиная с версии 7 Internet Explorer реализует стандарт XMLHttpRequest
.