readyState
数字值 0-4,对应有常量值。IE9+ 支持常量。
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()
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 不能得到,特别是跨域时。
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。
onreadystatechange
open(), send() 派发 readystatechange event;abort() 不会派发。
onloadstart
onprogress
onabort
onerror
网络错误等,跟 server 4xx, 5xx 等区分开。
onload
ontimeout
由 timeout 指定超时。
IE8 ontimeout 不能获取 event 属性,仅仅是通知而已;
onloadend
loadend 表示请求结束,请求或成功或失败。