1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
---
title: XMLHttpRequest.send()
slug: Web/API/XMLHttpRequest/send
tags:
- AJAX
- API
- HTTP запрос
- XHR
- XHR запрос
- XMLHttpRequest
- send
- запрос
translation_of: Web/API/XMLHttpRequest/send
---
<p>{{APIRef('XMLHttpRequest')}}</p>
<p>Метод <code><strong>XMLHttpRequest.send()</strong></code> отправляет запрос. Если запрос асинхронный (каким он является по умолчанию), то возврат из данного метода происходит сразу после отправления запроса. Если запрос синхронный, то метод возвращает управление только после получения ответа. Метод <code>send()</code> принимает необязательные аргументы в тело запросов. Если метод запроса <code>GET</code> или <code>HEAD</code>, то аргументы игнорируются и тело запроса устанавливается в null.</p>
<p>Если заголовок {{HTTPHeader("Accept")}} не был задан с помощью {{domxref("XMLHttpRequest.setRequestHeader", "setRequestHeader()")}}, будет отправлено значение <code>Accept</code> по умолчанию <code>*/*</code>.</p>
<h2 id="Синтаксис">Синтаксис</h2>
<pre class="syntaxbox">XMLHttpRequest.send(<em>body</em>)
</pre>
<h3 id="Параметры">Параметры</h3>
<dl>
<dt>
<p><em>body</em> {{optional_inline}}</p>
</dt>
<dd>
<p>Данные из параметра body оправляются в запросе через XHR. Это могут быть:</p>
<ul>
<li>{{domxref("Document")}}, и в этом случае данные будут сериализованы перед отправкой.</li>
<li><code>BodyInit</code>, которые, согласно спецификации <a href="https://fetch.spec.whatwg.org/#bodyinit">Fetch </a>могут быть: {{domxref("Blob")}}, {{domxref("BufferSource")}}, {{domxref("FormData")}}, {{domxref("URLSearchParams")}}, {{domxref("ReadableStream")}}, или объектом {{domxref("USVString")}}.</li>
</ul>
</dd>
</dl>
<p>Лучший способ передать двоичные данные (например при загрузке файлов) - это использование <a href="/en-US/docs/Web/API/ArrayBufferView">ArrayBufferView</a> или <a href="/en-US/docs/Web/API/Blob">Blobs</a> в сочетании с методом<code>send()</code>.</p>
<p>Если никакого значения не определено в качестве <em>body</em>, то будет использовано значение по умолчанию: <code>null</code>.</p>
<h3 id="Возвращаемое_значение">Возвращаемое значение</h3>
<p><code>undefined</code>.</p>
<h3 id="Исключения">Исключения</h3>
<table>
<thead>
<tr>
<th scope="col">Исключение</th>
<th scope="col">Описание</th>
</tr>
</thead>
<tbody>
<tr>
<td><code>InvalidStateError</code></td>
<td><code>send()</code> уже был вызван для запроса, и/или запрос завершён.</td>
</tr>
<tr>
<td><code>NetworkError</code></td>
<td>Тип запрошенного ресурса - Blob, но метод запроса не <code>GET</code>.</td>
</tr>
</tbody>
</table>
<h2 id="Пример_GET">Пример: GET</h2>
<pre><code>var xhr = new XMLHttpRequest();
xhr.open('GET', '/server', true);
xhr.onload = function () {
// Запрос завершён. Здесь можно обрабатывать результат.
};
xhr.send(null);
// xhr.send('string');
</code>// <code>xhr.send(new Blob());
// xhr.send(new Int8Array());
// xhr.send({ form: 'data' });
// xhr.send(document);</code>
</pre>
<h2 id="Пример_POST">Пример: POST</h2>
<pre><code>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');
</code>// <code>xhr.send(new Blob());
// xhr.send(new Int8Array());
// xhr.send({ form: 'data' });
// xhr.send(document);</code>
</pre>
<h2 id="Спецификации">Спецификации</h2>
<table class="standard-table">
<tbody>
<tr>
<th scope="col">Спецификация</th>
<th scope="col">Статус</th>
<th scope="col">Комментарий</th>
</tr>
<tr>
<td>{{SpecName('XMLHttpRequest', '#the-send()-method', 'send()')}}</td>
<td>{{Spec2('XMLHttpRequest')}}</td>
<td>WHATWG living standard</td>
</tr>
</tbody>
</table>
<h2 id="Поддержка_браузерами">Поддержка браузерами</h2>
<p>{{Compat("api.XMLHttpRequest.send")}}</p>
<h2 id="Смотрите_также">Смотрите также</h2>
<ul>
<li><a href="https://developer.mozilla.org/ru/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest">Использование XMLHttpRequest</a></li>
<li><a href="https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/HTML_in_XMLHttpRequest">HTML in XMLHttpRequest</a></li>
</ul>
|