提问者:小点点

将JS对象转换为表单数据


如何将JS对象转换为formdata

我想这样做的原因是,我有一个对象,是我从~100个表单字段值中构造出来的。

var item = {
   description: 'Some Item',
   price : '0.00',
   srate : '0.00',
   color : 'red',
   ...
   ...
}

现在我被要求将上载文件功能添加到表单中,当然,通过JSON这是不可能的,所以我计划转移到formdata。那么,有什么方法可以将我的JS对象转换为formdata吗?


共2个答案

匿名用户

如果您有一个对象,则可以轻松创建一个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());