XMLHttpRequest: send() 方法
注意:此功能在Web Workers中可用,但Service Workers除外。
该XMLHttpRequest
方法send()
将请求发送到服务器。
如果请求是异步的(这是默认设置),则此方法会在发送请求后立即返回,结果通过事件传递。如果请求是同步的,则此方法在响应到达之前不会返回。
send()
接受一个可选参数,允许您指定请求的主体;这主要用于诸如PUT
之类的请求。如果请求方法是GET
或HEAD
,则body
参数将被忽略,并且请求主体将设置为null
。
如果尚未使用setRequestHeader()
设置Accept
标头,则会发送类型为"*/*"
(任何类型)的Accept
标头。
语法
js
send()
send(body)
参数
body
可选-
要在 XHR 请求中发送的数据主体。这可以是
- 一个
Document
,在这种情况下,它会在发送之前被序列化。 - 一个
XMLHttpRequestBodyInit
,根据Fetch 规范,它可以是Blob
、ArrayBuffer
、TypedArray
、DataView
、FormData
、URLSearchParams
,或者字符串文字或对象。 null
如果未为主体指定值,则使用默认值
null
。 - 一个
发送二进制内容(例如在文件上传中)的最佳方法是结合使用TypedArray
、DataView
或Blob
对象以及send()
方法。
返回值
无(undefined
)。
异常
InvalidStateError
DOMException
-
如果已为请求调用
send()
,并且/或者请求已完成,则抛出此异常。 NetworkError
DOMException
-
如果要获取的资源类型是 Blob,并且方法不是
GET
,则抛出此异常。
示例:GET
js
const xhr = new XMLHttpRequest();
xhr.open("GET", "/server", true);
xhr.onload = () => {
// Request finished. Do processing here.
};
xhr.send(null);
// xhr.send('string');
// xhr.send(new Blob());
// xhr.send(new Int8Array());
// xhr.send(document);
示例:POST
js
const xhr = new XMLHttpRequest();
xhr.open("POST", "/server", true);
// Send the proper header information along with the request
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = () => {
// Call a function when the state changes.
if (xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200) {
// Request finished. Do processing here.
}
};
xhr.send("foo=bar&lorem=ipsum");
// xhr.send(new Int8Array());
// xhr.send(document);
规范
规范 |
---|
XMLHttpRequest 标准 # the-send()-method |
浏览器兼容性
BCD 表格仅在启用了 JavaScript 的浏览器中加载。