博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
H5实现formdata+ajax+上传进度上传文件
阅读量:5212 次
发布时间:2019-06-14

本文共 1453 字,大约阅读时间需要 4 分钟。

技术点:1)H5 formData(),2)XMLHttpRequest()

利用 FormData 对象,我们可以通过 js 用一些键值对来模拟一系列表单控件,我们还可以使用 XMLHttpRequest 的 send() 方法来异步的提交表单。与普通的 Ajax 相比,使用 FormData 的最大优点就是我们可以异步上传二进制文件。

案例:

 

$inputObj.change(function(){    var file = $(this)[0].files[0];    makeDoThisFile(file);});function makeDoThisFile(file){    var size = file.size,        type = file.type,        name = file.name;    //创建FormData对象    var formDataA = new FormData();    //添加文件    formDataA.append('file',file);    //添加提交按钮    formDataA.append("submit", "submit");   //创建ajax对象    var xhr = new XMLHttpRequest();     xhr.open('POST','php/uploadFile.php',true); // 异步传输    //文件上传进度    xhr.upload.onprogress = function (ev) {
// var percent = 0; if(ev.lengthComputable) { percent = 100 * ev.loaded/ev.total; console.log('已经上传'+percent); } } //发送请求 xhr.send(formDataA); //执行回调函数 xhr.onreadystatechange = callBlack; //执行ajax回调函数 function callBlack(){ var readyState = xhr.readyState;//HTTP 请求的状态 var status = xhr.status;//请求的状态码 //如果HTTP 响应已经完全接收。并且 由服务器返回的 HTTP 状态代码,如 200 表示成功 if(readyState == 4 && status == 200){   var response = xhr.responseText;//目前为止为服务器接收到的响应体 console.log(response); } }; }

 

 

兼容须知:

Chrome 7+

Firefox (Gecko2.0+) 4.0+

Internet Explorer 10+

Opera 12+

Safari 5+

 

 

 

转载于:https://www.cnblogs.com/xxyy1122/p/4997084.html

你可能感兴趣的文章
iOS基于B站的IJKPlayer框架的流媒体探究
查看>>
ios之库Protobuf的使用
查看>>
Hibernate初探之单表映射——第二章:Hibernate进阶
查看>>
QuickHit游戏
查看>>
C#之四十 Winform MD5加密
查看>>
ASP.NET(C#)——GridView刷新
查看>>
深入理解CommonJS!
查看>>
设计模式大类--行为模式(中)
查看>>
设计模式22——行为型模式之策略模式
查看>>
Java学习
查看>>
ansible案例-安装nginx
查看>>
CodeForces 588B
查看>>
python迭代-如何使用生成器函数实现可迭代对象
查看>>
附加作业:黄金点游戏
查看>>
如何从GitHub获取源代码
查看>>
[UnityAPI]DataUtility类
查看>>
[Unity插件]AI行为树使用总结
查看>>
linux下的/dev/shm目录
查看>>
测试与优化
查看>>
IE9以下浏览器提示升级
查看>>