如何将JS对象转换为formdata
?
我想这样做的原因是,我有一个对象,是我从~100个表单字段值中构造出来的。
var item = {
description: 'Some Item',
price : '0.00',
srate : '0.00',
color : 'red',
...
...
}
现在我被要求将上载文件功能添加到表单中,当然,通过JSON这是不可能的,所以我计划转移到formdata
。那么,有什么方法可以将我的JS对象转换为formdata
吗?
如果您有一个对象,则可以轻松创建一个FormData对象,并将该对象中的名称和值追加到FormData。
您还没有发布任何代码,所以这是一个通用示例;
var form_data = new FormData();
for ( var key in item ) {
form_data.append(key, item[key]);
}
$.ajax({
url : 'http://example.com/upload.php',
data : form_data,
processData : false,
contentType : false,
type: 'POST'
}).done(function(data){
// do stuff
});
MDN文档中有更多示例
对于ES6和功能更强的编程方法,@Adeneo的答案可能是这样的:
function getFormData(object) {
const formData = new FormData();
Object.keys(object).forEach(key => formData.append(key, object[key]));
return formData;
}
或者使用.reduce()
和箭头函数:
const getFormData = object => Object.keys(object).reduce((formData, key) => {
formData.append(key, object[key]);
return formData;
}, new FormData());