博客
关于我
XMLHttpRequest
阅读量:797 次
发布时间:2023-04-03

本文共 1347 字,大约阅读时间需要 4 分钟。

XMLHttpRequest (XHR) 是一种用于客户端与服务器之间进行异步数据交互的技术。它能够在不刷新页面的情况下,发送请求并接收响应。这一点需要注意的是,尽管名称中包含"XML",但XHR并不仅限于处理XML数据,它可以与服务器交互各种类型的数据。

构造

XMLHttpRequest 对象可以通过以下方式创建:

new XMLHttpRequest();

属性

XMLHttpRequest 对象继承自 XMLHttpRequestEventTargetEventTarget,并提供了一系列属性来描述请求的状态和结果。以下是主要属性的说明:

属性 描述
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/

你可能感兴趣的文章
OSPF有哪些优势?解决了RIP的什么问题?
查看>>
OSPF理论
查看>>
OSPF的七种类型LSA
查看>>
OSPF的安全性考虑:全面解析与最佳实践
查看>>
OSPF知识点大全,网络工程师快速收藏!
查看>>
ospf综合实验2 2012/9/8
查看>>
OSPF规划两大模型:双塔奇兵、犬牙交错
查看>>
OSPF认证
查看>>
OSPF设计原则,命令以H3C为例
查看>>
ospf路由 华3_动态路由OSPF基本原理及配置,一分钟了解下
查看>>
OSPF路由协议配置
查看>>
OSPRay 开源项目教程
查看>>
VC++实现应用程序对插件的支持
查看>>
OSS 访问图片资源报“No ‘Access-Control-Allow-Origin‘”的错误
查看>>
ossfs常见配置错误
查看>>
Ossim4系统故障处理
查看>>
Spring赌上未来:响应式的 WebFlux 框架更优雅,性能更强!
查看>>
oss报UnknownHost,k8s设置hostAliases参数
查看>>
OSS报错The difference between the request time and the current time is too large
查看>>
OSS直传与UXCore-Uploader实践
查看>>