目的是为了方便异步提交form表单的数据,尤其是在单页应用中方便实现表单数据的提交。
代码如下:
export function jsToFormData(config) { //对象转formdata格式 let formData = new FormData(); let obj = config.data; let arrayKey = config.arrayKey; for (var i in obj) { if (isArray(obj[i])) { obj[i].map(item => { if (!arrayKey) { formData.append(i, item) } else { formData.append(i + '[]', item) } }) } else if (obj[i] instanceof FileList) { //filelist 文件类型的处理 for (var fileItem = 0; fileItem < obj[i].length; fileItem++) { if (!arrayKey) { formData.append(i, obj[i].item(fileItem)) } else { formData.append(i + '[]', obj[i].item(fileItem)) } } } else { formData.append(i, obj[i]) } } return formData; }
本代码可以实现的功能是对js数据对象转formdata数据格式,可以做到对数组的数据处理,可以对filelist文件对象的处理。
具体使用,个人可以依据自己的项目情况进行更改或改进。
注意:不兼容ie9及以下的ie