XMLHttpRequest

readyState

数字值 0-4,对应有常量值。IE9+ 支持常量。

Request

open(method, url, async = true, username = null, password = null)

async 默认为 true, 表示 asynchronous request;为 false 时,表示 synchronous request。

对于 synchronous request,在 main thread 中会在 console 给一条警告,建议只在 Worker 中使用。此外还有一些限制,见 timeout, responseType

setRequestHeader()
timeout

超时单位为 ms, 默认为 0,即没有超时。

IE8+ 支持, IE 只能在 open() 和 send() 之间设置 timeout。

withCredentials

用于 CORS

IE10+ 支持。

upload

IE10+ 支持。

send(body = null)

若 request method 是 GET 或 HEAD,则忽略 body。

abort()

Response

responseURL
status

response 状态码。status 可能为 0: readyState 为 OPENED; timeout

readyState 为 OPENED 时,IE<10 访问 status 会报错。

statusText

response 状态消息。

getResponseHeader(name)

有些 headers 不能得到,比如 Set-Cookie 等。在跨域时可以获取的 headers 更少。

getAllResponseHeaders()

获取全部 response headers, 一行一条 header, 换行符为 CRLF。

有些 headers 不能得到,特别是跨域时。

Response body

overrideMimeType(mime)

如果 readyState 为 LOADING, DONE 则报错。

IE11 支持。

responseType

默认值为 ''。

若 Global object 不是 window(比如 worker)则忽略 'document'。

如果 readyState 为 LOADING, DONE 则报错。

对于 synchronous request,若 Global object 是 window 则报错。

IE10+ 支持,但不支持 'json'

response

IE10+ 支持

responseText

若 responseType 不为 '' 或 'text' 则抛出错误。

readyState 不为 LOADING, DONE 时返回 ''。

responseXML

responseType 不为 '' 或 'document' 则抛出错误。

readyState 不为 DONE 时返回 null。

Event handlers

Events summary

onreadystatechange

open(), send() 派发 readystatechange event;abort() 不会派发。

ProgressEvent

onloadstart

onprogress

onabort

onerror

网络错误等,跟 server 4xx, 5xx 等区分开。

onload

ontimeout

由 timeout 指定超时。

IE8 ontimeout 不能获取 event 属性,仅仅是通知而已;

onloadend

loadend 表示请求结束,请求或成功或失败。