建立和探索一个简单示例之后,现在可以深入了解XMLHttpRequest对象支持的功能,以及如何在你的请求中使用它们了。起点就是第二级规范里定义的那些额外事件。之前已经使用一个:readystatechange。它是从第一等级转过来的,其他的如下表所示。
XMLHttpRequest对象定义的事件
名称 | 说明 | 事件类型 |
---|---|---|
abort | 在请求被中止时触发 | ProgressEvent |
error | 在请求失败时触发 | ProgressEvent |
load | 在请求成功完成时触发 | ProgressEvent |
loadend | 在请求已完成时触发,无论成功还是发生错误 | ProgressEvent |
loadstart | 在请求开始时触发 | ProgressEvent |
progress | 触发以提示请求的进度 | progressEvent |
这些事件大多数会在请求的某一个特定点上触发。readystatechange(之前介绍后)和progress这两个事件例外,它们可以多次触发以提示进度更新。除了readstatechange之外,表中展示的其他事件都定义于XMLHttpRequest规范的第二级。注:考虑到第二级事件的实现还不到位,readystatechange是目前唯一能可靠追踪请求进度的事件。
调度这些事件时,浏览器会对readystatechange事件使用常规的Event对象,对其他事件则使用ProgressEvent对象。ProgressEvent对象定义了Event对象的所有成员,并增加下表中介绍的这些成员。
ProgressEvent定义的额外属性
名称 | 说明 | 事件类型 |
---|---|---|
lengthComputable | 如果能够计算数据流的总长度则返回true | 布尔值 |
loaded | 返回当前已载入的数据量 | 数值 |
total | 返回可用的数据总量 | 数值 |