XMLHttpRequest2.0是XHR的新版本,针对老版本的XHR对象的问题作出了很多的改进
1.可以设置HTTP请求时限
增加timeout属性,设置http请求时限
xhr.timeout = 3000;
指定了最长等待时间为3000毫秒,过了这个时间之后,会停止请求。
xhr.ontimeout = function(event){
alert("请求超时");
}
xhr的新方法timeout,指定回调函数。
目前opera、firefox和IE10 支持。
2.新增FormData对象,用来模拟表单
var formdata = new FormData();
formdata.append('name','zhangsan');
formdata.append('age',23);
xhr.send(formdata);
创建一个FormData对象,并且为其添加表单项,最后传送FormData对象。与表单提交的效果是一样的。
3.不仅可以发送文本信息,还可以上传文件
var formdata = new FormData();
for(var i = 0;i<files.length;i++){
formdata.append('files[]',files[i]);
}
xhr.send(formdata);
4.跨域资源共享————CORS
xhr.open('GET', 'http://other.server/and/path/to/script');
5.进度信息
在传送数据时,有一个progress事件,分为上传和下载,上传属于XMLHttpRequest对象,下载属于XMLHttpRequest.upload对象
xhr.onprogress = updateProgress;
xhr.upload.onprogress = updateProgress;
function updateProgress(event) {
if (event.lengthComputable) {
var percentComplete = event.loaded / event.total; //已经传输的字节数和需要传输的总字节
}
}
还有以下几种方式可以指定回调函数:
* load事件:传输成功完成。
* abort事件:传输被用户取消。
* error事件:传输中出现错误。
* loadstart事件:传输开始。
* loadEnd事件:传输结束,但是不知道成功还是失败。
6.可以接受二进制数据