本文共 1347 字,大约阅读时间需要 4 分钟。
XMLHttpRequest (XHR) 是一种用于客户端与服务器之间进行异步数据交互的技术。它能够在不刷新页面的情况下,发送请求并接收响应。这一点需要注意的是,尽管名称中包含"XML",但XHR并不仅限于处理XML数据,它可以与服务器交互各种类型的数据。
XMLHttpRequest 对象可以通过以下方式创建:
new XMLHttpRequest();
XMLHttpRequest 对象继承自 XMLHttpRequestEventTarget 和 EventTarget,并提供了一系列属性来描述请求的状态和结果。以下是主要属性的说明:
| 属性 | 描述 |
|---|---|
onreadystatechange | 回调函数,请求状态改变时触发。 |
readyState | 返回当前请求状态的代码值。 |
response | 弹性响应对象,包含服务器返回的数据。 |
responseText | 响应内容的文本形式。 |
responseType | 服务器返回数据的 MIME 类型。 |
responseURL | 服务器返回的资源 URL。 |
responseXML | XML 格式的响应数据。 |
status | HTTP 请求的状态码。 |
statusText | HTTP 状态码的文本描述。 |
timeout | 请求的超时时间(以毫秒为单位)。 |
ontimeout | 超时时触发的回调函数。 |
upload | 上传操作的相关属性。 |
withCredentials | 指示是否包含 cookies 和授权信息。 |
readyState 属性可以取以下值,表示请求的不同阶段:
| 值 | 状态 | 描述 |
|---|---|---|
| 0 | UNSENT | 请求对象创建,open() 未调用。 |
| 1 | OPENED | open() 方法已被调用。 |
| 2 | HEADERS_RECEIVED | send() 方法已调用,头信息和状态可用。 |
| 3 | LOADING | 数据正在下载,responseText 包含部分数据。 |
| 4 | DONE | 请求完成,数据获取完成。 |
XMLHttpRequest 提供多种方法来控制请求和处理响应:
open(method, url, async, user, password):初始化请求。getAllResponseHeaders():获取所有响应头信息。getResponseHeader(name):获取特定响应头信息。overrideMimeType(mimeType):重设响应数据的 MIME 类型。setRequestHeader(name, value):设置请求头信息。send(data):发送请求,通常在 open() 之后调用。abort():取消当前请求,通常在 send() 之后调用。reopen():重新打开已有的请求。XMLHttpRequest 定义了一系列事件,用于响应请求状态的变化:
abort:请求被取消时触发。error:请求失败时触发。load:数据开始下载时触发。loadend:数据下载完成时触发。loadstart:数据下载开始时触发。progress:下载进度发生变化时触发。timeout:请求超时时触发。通过这些事件,开发者可以在不阻塞 UI 的同时,实时跟踪请求的状态。
转载地址:http://egefk.baihongyu.com/