Мне нужно отправить довольно длинную форму, и я хотел бы создать объект, содержащий имя ввода в качестве ключа и значение ввода в качестве значения. Я попытался перебрать event.target
и 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 на мой сервер node + express. 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))
});
}
Однако, если я сначала создам объект, а затем отправлю его с помощью выборки, он сработает. Итак, кто-нибудь знает, как перебирать элементы формы или как решить проблему с выборкой? Спасибо :))