建立和探索一个简单示例之后,现在可以深入了解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 |
返回可用的数据总量 |
数值 |