XMLHttpRequest 介绍
XMLHttpRequest 介绍
XMLHttpRequest是Ajax的核心技术,它使得浏览器可以在不刷新页面的情况下与服务器进行数据交互。本文将详细介绍XMLHttpRequest的由来、定义、属性和方法,并提供兼容性表格,帮助读者全面了解这一重要的前端开发技术。
XMLHttpRequest的由来
首先倒推到1999年间,这一年,Microsoft在Internet Explorer 5.0中首次使用了一个技术。通过这个技术,浏览器页面可以不用通过页面重载或者表单提交,就可以将信息发送到服务器,完成信息的交互。这个技术就是ActiveX对象,即XMLHTTP。
这个技术发布之后,得到了业界的一致欢迎。直到2000年的时候,基本成为了一种标准。同时,Mozilla、Opera等也相继实现了一种具有相同接口的原生对象,即我们现在所看到的XMLHttpRequest。后来,XMLHttpRequest也成为了这个技术的名称。
什么是XMLHttpRequest
XMLHttpRequest实质上就是一种具有发送异步请求功能的技术,是一个可以在JavaScript、JScript、VBScript等脚本语言中使用的API对象。它可以通过异步发送HTTP请求,完成前后端的交互。在我们的客户端界面上,无刷新交互只是一种表现,而异步发送请求才是这个技术的根本。
目前为止,XMLHttpRequest早已成为正式的规范。并且在大多数浏览器上都得到了支持。
XMLHttpRequest的属性和方法
接下来我们会对XMLHttpRequest的属性和方法做一个简单的展开学习,主要是认识一下XMLHttpRequest到底提供了一些什么功能属性。为之后的学习做一个基本的概念性了解。
XMLHttpRequest的属性
标准属性
属性名 | 备注 |
---|---|
onreadystatechange | 当readyState发生变化时候触发 |
readyState | 请求状态码。 |
response | 返回一个Blob、ArrayBuffer、Document或DOMString。类型受responseType影响。 |
responseText | 返回一个DOMString。请求不成功或者未发送情况下返回null。 |
responseType | 响应类型。 |
responseURL | 返回序列化URL,URL为空则返回空字符串。 |
responseXML | 返回一个Document。请求未发送、不成功或者解析失败,返回null。 |
status | 请求的响应状态。 |
statusText | 返回一个DomString,包含http响应状态。 |
timeout | 超时。定义一个最大的请求响应时间。 |
ontimeout | 超时调用事件。 |
upload | 上传过程。 |
withCredentials | 指定跨域请求是否带有授权信息。 |
非标准属性
属性名 | 备注 |
---|---|
channel | 一个nsIChannel,当执行请求时,对象使用的通道。 |
mozAnon | 布尔值。为true情况下,请求将在没有身份验证header头和cookie的情况下发送。 |
mozSystem | 布尔值。为true情况下,请求将不强制执行同源策略。 |
mozBackgroundRequest | 布尔值。指示是否是服务器的请求。 |
XMLHttpRequest的方法
标准方法
方法名 | 备注 |
---|---|
abort | 中止请求 |
getAllResponseHeaders | 返回所有用CRLF分隔的响应头的字符串的形式。没有收到响应则返回null。 |
getResponseHeader | 返回指定响应头的字符串。未收到响应,或者响应不存在该报头,返回null。 |
open | 初始化一个请求。 |
overrideMimeType | 重写MIME类型。 |
send | 发送请求。 |
setRequestHeader | 设置HTTP请求头。 |
非标准方法
方法名 | 备注 |
---|---|
openRequest | 初始化一个请求。 |
XMLHttpRequest的事件
事件名 | 备注 |
---|---|
abort | 停止请求的时候触发。 |
error | 当请求发生错误的时候触发。 |
load | 请求成功完成的时候触发。 |
loadend | 请求结束的时候触发。 |
loadstart | 收到响应数据的时候触发。 |
progress | 接收数据开始周期时候触发。 |
timeout | 超时未接收到数据的时候触发。 |
兼容性
即便XMLHttpRequest在绝大多数浏览器都得到支持,但仍有部分对象属性和方法不被少数浏览器所兼容。我们可以通过Can I use进行查阅。下面给出一个截至当前为止XMLHttpRequest在各浏览器上的兼容性表格进行参照。
小结
- XMLHttpRequest现在已经成为了标准,并且被绝大部分的浏览器所支持,兼容性好。
- XMLHttpRequest拥有丰富的属性、方法及事件调用,满足我们对异步请求的大部分需求。