-
可以设置 HTTP 请求的时限
-
可以使用
FormData
对象管理表单数据 -
可以上传文件
-
可以获得数据传输的进度信息
设置HTTP
请求时限
FormData
对象管理表单数据
Ajax 操作往往用来提交表单数据。为了方便表单处理,HTML5
新增了一个 FormData
对象,可以模拟表单操作:
// 1. 新建 FormData 对象 var fd = new FormData() // 2. 为 FormData 添加表单项 fd.append('uname', 'zs') fd.append('upwd', '123456') // 3. 创建 XHR 对象 var xhr = new XMLHttpRequest() // 4. 指定请求类型与URL地址 xhr.open('POST', 'http://www.liulongbin.top:3006/api/formdata') // 5. 直接提交 FormData 对象,这与提交网页表单的效果,完全一样 xhr.send(fd)
直接获取网页中提交前的表单数据
// 获取表单元素 var form = document.querySelector('#form1') // 监听表单元素的 submit 事件 form.addEventListener('submit', function(e) { e.preventDefault() // 根据 form 表单创建 FormData 对象,会自动将表单数据填充到 FormData 对象中 var fd = new FormData(form) var xhr = new XMLHttpRequest() xhr.open('POST', 'http://www.liulongbin.top:3006/api/formdata') xhr.send(fd) xhr.onreadystatechange = function() {} })
计算文件上传进度
新版本的 XMLHttpRequest
对象中,可以通过监听 xhr.upload.onprogress
事件,来获取到文件的上传进度。语法格式如下:
// 创建 XHR 对象 var xhr = new XMLHttpRequest() // 监听 xhr.upload 的 onprogress 事件 xhr.upload.onprogress = function(e) { // e.lengthComputable 是一个布尔值,表示当前上传的资源是否具有可计算的长度 if (e.lengthComputable) { // e.loaded 已传输的字节 // e.total 需传输的总字节 var percentComplete = Math.ceil((e.loaded / e.total) * 100) } }
标签:功能,XMLHttpRequest,FormData,表单,xhr,Level2,fd,var From: https://www.cnblogs.com/harryzong/p/17083219.html