【发布时间】:2018-06-30 08:40:01
【问题描述】:
我有一个 ReactJS,用户在其中上传图像和文本输入。 表单被分成动态数量的部分,它们都包含相同类型的信息,如下所示:
<div>
<input placeholder="Name of the author" />
<input type="file" />
<input placeholder="Age of the author" />
</div>
我曾经使用JSON.stringify() 将数据发送到我的node.js 后端并将它们保存到我的数据库中,但是,由于我现在也允许文件上传,所以我必须使用FormData()。当我使用JSON.stringify() 时,它把我整齐地保存为一个对象数组,但现在它不再起作用了,我只是得到了一个字符串数组。
首先是我的 ReactJS 前端的相关代码:
class Form extends React.Component {
constructor (props) {
super(props);
this.state = {
formdata : [
{author : "name", age: 1},
{author : "othername", age: 144}
]
}
}
onSubmit = (e) => {
let formData = new FormData();
for (var i = 0; i < formdata.length; i++) {
formData.append('formdata', JSON.stringify(formdata[i]));
}
axios.post('newauthor',
formData)
.then(function (response) {
console.log(response);
})
.catch(function (error) {
console.log(error);
});
}
render() {
return(
<form onSubmit={this.onSubmit} encType="multipart/form-data">
//Content see above
</form>
)
}
And in node.js I save the formdata to my database like so:
NewEntry.formdata = req.body.data;
但这会返回一个 JSON 对象数组,如下所示:
[{"author" : "name", "age": 1},{"author" : "othername", "age": 144}]
但是,我需要稍后使用该数据,直到现在,我可以映射数据并使用对象的名称来获取值。我读了几个关于这个话题的问题,但没有任何帮助。我也尝试过JSON.parse,但由于某种原因,这总是给我一个错误(它给了我不同的错误,其中之一是位置 1 的 JSON 中有一个意外字符)。
那么,如何将 JSON 字符串转换为对象数组呢?
【问题讨论】:
-
什么是
data?您在提交内部迭代?我在任何地方都看不到它的定义! -
你在迭代一些东西,我猜它是对象数组,并将每个项目附加到
formData与相同的name,所以下一个项目将覆盖前一个。
标签: javascript arrays json node.js reactjs