XMLHttpRequest Level2的新功能
-
-
可以使用
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) } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律