我有一个相当长的表单要提交,并且想创建一个对象,其中包含作为键的输入名称和作为值的输入值。我尝试遍历event.target
and event.target.elements
,如下所示:
handleModify(event) {
let tempPlayer = {}
Object.entries(event.target.elements).forEach(([name, input]) => {
tempPlayer[name] = input;
});
}
但是我得到了关于循环循环对象值的 TypeError。循环这些值可能不是正确的方法,正如我通过登录控制台看到的 event.target 和 event.target.elements 实际上包含 html 表单元素。我不知道如何获取表单数据。我的表格如下所示:
<form onSubmit={e=> props.onSubmit(e)}>
<label htmlFor="name">
Name:
<input type="text" name="name" placeholder="Estelle Nze Minko" />
</label>
<label htmlFor="poste">
Poste:
<input type="text" name="poste" placeholder="Back" />
</label>
<label htmlFor="number">
Number:
<input type="number" min="0" max="100" step="1" name="number" placeholder="27" />
</label>
<label htmlFor="height">
Height (m):
<input type="number" min="1.00" max="2.34" step="0.01" name="height" placeholder="1.78" />
</label>
<label htmlFor="selects">
Number of selects:
<input type="number" min="0" max="300" step="1" name="selects" placeholder="88" />
</label>
<button type="submit">Add</button>
</form>
我之所以使用这种方法,是因为它是我在服务器端通过获取表单数据并循环req.body
输入的方式。但是,现在我已将 ejs 模板更改为 React,我无法发送表单数据。这就是为什么我试图直接在 React 句柄方法中循环遍历这些值。我无法通过 fetch 将表单数据发送到我的节点 + 快递服务器。req.body
总是最终是空的。我认为这是因为我正在使用body-parser并且我正在发送一个new FormData()
(不支持?):
handleModify(event) {
event.preventDefault();
fetch(`/players/modify/${this.props.match.params.id}/confirm`, {
method: "POST",
headers: { "Content-Type": "application/json" },
mode: "cors",
body: JSON.stringify(new FormData(event.target))
});
}
但是,如果我先创建对象,然后使用 fetch 发送它,它就可以工作。那么,有谁知道如何遍历表单元素或如何解决获取问题?谢谢 :))