XMLHttpRequest: send() 方法

基线 广泛可用

此功能已得到很好的确立,并且可在许多设备和浏览器版本上使用。它自以下时间起在浏览器中可用 2015 年 7 月.

注意:此功能在Web Workers中可用,但Service Workers除外。

XMLHttpRequest方法send()将请求发送到服务器。

如果请求是异步的(这是默认设置),则此方法会在发送请求后立即返回,结果通过事件传递。如果请求是同步的,则此方法在响应到达之前不会返回。

send()接受一个可选参数,允许您指定请求的主体;这主要用于诸如PUT之类的请求。如果请求方法是GETHEAD,则body参数将被忽略,并且请求主体将设置为null

如果尚未使用setRequestHeader()设置Accept标头,则会发送类型为"*/*"(任何类型)的Accept标头。

语法

js
send()
send(body)

参数

body 可选

要在 XHR 请求中发送的数据主体。这可以是

如果未为主体指定值,则使用默认值null

发送二进制内容(例如在文件上传中)的最佳方法是结合使用TypedArrayDataViewBlob对象以及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 的浏览器中加载。

另请参阅