XHR2那些事儿
XMLHttpRequest Level 2
使用AJAX好多年了吧,相信创建一个请求监听什么状态都驾轻就熟了,还有什么好说的呢。问题来源于最近公司在优化图片上传的接口。所以来总结以下XMLHttpRequest Level 2的一些东西。
Formdata
AJAX 操作往往用来传递表单数据。为了方便表单处理,HTML 5新增了一个 FormData 对象,可以用于模拟表单。1var formData = new FormData(form)
新版 XMLHttpRequest 对象,不仅可以发送文本信息,还可以上传文件。12345var input = document.getElementById("input"), formData = new FormData();formData.append("file",input.files[0]); // file名称与后台接收的名称一致xhr.open('POST', form.action);xhr.send(formData);
Progress
XHR 对象提供了一系列 API,用于监听进度事件,progress表示请求的传输中状态:
|
|
知道progress可以干啥了吧。只要event.lengthComputable为true,就能拿到传输数据的进度啦。
当然XHR2还有以下特征:
- 可以设置HTTP请求的超时时间。
- 可以使用FormData对象管理表单数据。
- 可以上传文件。
- 可以请求不同域名下的数据(跨域请求)。
- 可以获取服务器端的二进制数据。
- 可以获得数据传输的进度信息。
好好玩吧~