首页 > 代码库 > FormData对象
FormData对象
FF4中增加了一个很有意思的对象,FormData。通常我们提交(使用submit button)时,会把form中的所有表格元素的name与value组成一个queryString,提交到后台。这用jQuery的方法来说,就是 serialize。但当我们使用Ajax提交时,这过程就要变成人工的了。因此,FormData对象的出现可以减少我们一些工作量。W3c草案提供了三种方案来获取或修改FormData。
1:创建一个空的FormData对象,然后再用append方法逐个添加键值对:
var data = http://www.mamicode.com/new FormData();data.append(‘uploadpic‘, $(‘#licensefile‘)[0].files[0]);//可以是文件data.append(‘type‘,"license");
2:取得form元素对象,将它作为参数传入FormData对象中:
var form = document.getElementById("form");var data= http://www.mamicode.com/new FormData(form);
3 : 利用form元素对象的getFormData方法生成它:
var form = document.getElementById("form");var data= http://www.mamicode.com/form.getFormData()
formdata是一个不透明的对象,现在暂时只有一个append可以操作,不能通过序列化手段得到其里面的内容。
最终可以将 data = http://www.mamicode.com/new FormData()获取到的数据丢到ajax的data里面,作为数据传给后台;以下是我用FormData对象上传图片的例子:
html file域:
<input type="file" id="licensefile" multiple="multiple">
jquery ajax结合FormData异步上传图片:
$("#licensefile").change(function(){ popLayer.loading(); var data = http://www.mamicode.com/new FormData(); data.append(‘uploadpic‘, $(‘#licensefile‘)[0].files[0]); data.append(‘type‘,"license"); $.ajax({ type: "post", url: "fileupload/uploadify!userUploadPhoto.action", processData: false, contentType: false, data: data, success: function(data){ var _data =http://www.mamicode.com/ data if (data.errorCode=="000000") { vm.licenseUrl = data.halfImgUrl; storage.set("licenseUrl",data.halfImgUrl); popLayer.destroy(); }; } }); });
关于FormData更多的属性和查阅:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData
参考其他人经验以及部分个人总结,如有侵权,请及时联系本人,QQ:435641688,谢谢
FormData对象
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。