XHR2上传下载进度监控
XMLHttpRequest Level 2 简称XHR2添加了ProgressEvent接口,使得可以不借助第三方插件,使用原生Javascript就可以实现上传下载进度监控。
下载的progess事件由XMLHttpRequest对象自身触发,而上传的progess由XMLHttpRequest.upload对象触发。
使用原生的Javascript可以这样写:
1 | var xhr = new XMLHttpRequest(); |
如果使用JQuery则需要一些曲折,因为JQuery没有对上传下载进度监控提供直接的支持。但是$.ajax函数提供了xhr和xhrFields配置接口,可以修改JQuery内部使用的XMLHttpRequest对象的属性,甚至可以提供自己的XMLHttpRequest对象供JQuery使用。
所有有了以下两种方式来配置$.ajax实现进度监控:
使用xhr配置
1 | $.ajax({ |
使用xhrFields配置
1 | $.ajax({ |
进度事件处理函数
此时的事件对象为ProgressEvent
1 | function upload_progress_handler (e) { |
References:
[1]Using XMLHttpRequest
[2]jQuery+FormData+文件上传+上传进度
===
[erq]