如何将JS对象转换为formdata
?
我想这样做的原因是,我有一个对象,是我从~100个表单字段值中构造出来的。
var item = {
description: 'Some Item',
price : '0.00',
srate : '0.00',
color : 'red',
...
...
}
现在我被要求将上载文件功能添加到表单中,当然,通过JSON这是不可能的,所以我计划转移到formdata
。那么,有什么方法可以将我的JS对象转换为formdata
吗?
对于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());
如果您有一个对象,则可以轻松创建一个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文档中有更多示例
问题内容: 我正在尝试将表单数据转换为对象,但我有这个线程,但是我不知道为什么它对我不起作用。我正在使用以下代码。 我尝试调试它,并注意到当我的函数运行时,它总是在else语句中运行代码。 问题答案: 我在JSFiddle中添加了以上表单,它将JSON数据显示为输出。 工作中的JSFiddle
问题内容: 如何将表单的所有元素转换为JavaScript对象? 我希望有一些方法可以自动从表单中构建JavaScript对象,而不必遍历每个元素。我不想要由返回的字符串,也不希望由返回的映射 问题答案: 已经做到了。您只需要将数据整理成所需的格式: 注意与真实输入同名的隐藏字段,因为它们会被覆盖。
如果有任何默认函数可以将post表单数据字符串转换为json对象?
问题内容: 我的应用程序创建了一个JavaScript对象,如下所示: 但是我需要将此对象作为数组。 因此,我尝试通过遍历该对象并将该元素添加到数组来将该对象转换为数组: 有没有更好的方法将对象转换为数组或函数? 问题答案: 输出:
问题内容: 转换的最佳方法是什么: 至: 问题答案: ECMAScript 6引入了易于填充的内容: 该方法用于将所有可枚举的自身属性的值从一个或多个源对象复制到目标对象。它将返回目标对象。 数组的自身属性不会被复制,因为它无法枚举。 另外,您可以使用ES6 传播语法来达到相同的结果:
问题内容: 如果我用以下方法在JS中定义了一个对象: 如何将对象转换为JSON?输出字符串应为: 问题答案: 当前所有的浏览器都内置了本机JSON支持。因此,只要您不使用IE6 / 7之类的史前浏览器,就可以像这样轻松地做到这一点: