使用XMLHttpRequest
(XHR
)对象可以与服务器交互。您可以从URL
获取数据,而无需让整个的页面刷新。这使得Web
页面可以只更新页面的局部,而不影响用户的操作。XMLHttpRequest
在 Ajax
编程中被大量使用。
尽管名称如此,XMLHttpRequest
可以用于获取任何类型的数据,而不仅仅是XML
,它还支持 HTTP
以外的协议(包括文件和ftp
)。
如果您的通信需要从服务器接收事件或消息数据,请考虑通过EventSource
接口使用 server-sent events
。对于 full-duplex
通信, WebSockets
可能是更好的选择。
构造方法
XMLHttpRequest()
构造函数初始化一个 XMLHttpRequest
对象。必须在所有其他方法被调用前调用构造函数。
属性
此接口继承了 XMLHttpRequestEventTarget
和 EventTarget
的属性。
XMLHttpRequest.onreadystatechange
当readyState
属性发生变化时调用的EventHandler
。
XMLHttpRequest.readyState 只读
返回 一个unsigned short
即无符号短整型,请求的状态码。
XMLHttpRequest.response 只读
返回ArrayBuffer
、Blob
、Document
、DOMString
,具体是哪种类型取决于XMLHttpRequest.responseType
的值。其中包含响应体body
。
XMLHttpRequest.responseText XMLHttpRequest.responseText
返回一个DOMString
,该DOMString
包含对请求的响应,如果请求未成功或尚未发送,则返回null
。
XMLHttpRequest.responseType
定义响应类型的枚举值。
XMLHttpRequest.responseURL 只读
返回响应的序列化URL
,如果URL
为空,则返回空字符串。
XMLHttpRequest.responseXML 只读
返回一个Document
,其中包含该请求的响应,如果请求未成功、尚未发送或不能解析为XML
或HTML
,则返回null
。
XMLHttpRequest.status 只读
返回 unsigned short
即无符号短整型请求响应状态。
XMLHttpRequest.statusText 只读
返回一个DOMString
,其中包含HTTP
服务器返回的响应状态。与 XMLHTTPRequest.status
不同的是,它包括响应状态的整个文本(例如,“200 OK”)。
注意:根据
HTTP/2
规范(8.1.2.4响应伪标头字段),HTTP/2
没有定义一种方式来携带HTTP/1.1
状态行中包含的版本或原因短语。
XMLHttpRequest.timeout
unsigned long
即无符号长整型,表示该请求的最大请求时间(毫秒),超过该时间请求会自动结束。
XMLHttpRequestEventTarget.ontimeout
当请求超时调用的EventHandler
。
XMLHttpRequest.upload 只读
XMLHttpRequestUpload
,表示上传过程。
XMLHttpRequest.withCredentials
Boolean
,用来指定跨域的请求是否应该使用证书(如cookie
或授权header
头)。
非标准属性
XMLHttpRequest.channel只读
nsIChannel
,对象在执行请求时使用的通道。
XMLHttpRequest.mozAnon只读
一个布尔值,如果为真,请求将在没有cookie
和身份验证header
头的情况下发送。
XMLHttpRequest.mozSystem只读
一个布尔值,如果为真,则在请求时不会强制执行同源策略。
XMLHttpRequest.mozBackgroundRequest
一个布尔值,它指示对象是否是后台服务器端的请求
XMLHttpRequest.mozResponseArrayBuffer 已废弃 Gecko 6 只读
一个ArrayBuffer
类型,把请求的响应作为一个TypedArrays
。
XMLHttpRequest.multipart已废弃 Gecko 22
这个Gecko
的独有属性,是一个布尔值,在Firefox/Gecko 22
中被删除了。请使用Server-Sent Events, Web Sockets
, 或来自进度事件的responseText
代替。
方法
XMLHttpRequest.abort()
如果请求已经被发送,则立刻中止请求.
XMLHttpRequest.getAllResponseHeaders()
以字符串的形式返回所有用CRLF
分隔的响应头,如果没有收到响应,则返回null
。
XMLHttpRequest.getResponseHeader()
返回包含指定响应头的字符串,如果响应尚未收到或响应中不存在该报头,则返回null
。
XMLHttpRequest.open()
初始化一个请求。该方法只能JavaScript
代码中使用,若要在native code
中初始化请求,请使用openRequest()
。
XMLHttpRequest.overrideMimeType()
重写由服务器返回的MIME type
。
XMLHttpRequest.send()
发送请求。如果请求是异步的(默认),那么该方法将在请求发送后立即返回。
XMLHttpRequest.setRequestHeader()
设置HTTP
请求头的值。您必须在open()
之后、send()
之前调用setRequestHeader()
这个方法。
非标准方法
init()
在 C++代码中初始化一个XHR
对象.
警告: 该方法不能在
JavaScript
代码中使用.
openRequest()
初始化一个请求. 这个方法用于本地代码; 如果用JavaScript
代码来初始化请求, 使用 open()
代替. 看文档open()
.
XMLHttpRequest.sendAsBinary()
send()
方法的变体,用来发送二进制数据。