#javascript #html #json #form-data
Вопрос:
У меня есть серверная часть REST и интерфейс HTML. Я использую формы на интерфейсе для отправки запросов на серверную часть. Для этого я использую FormData для преобразования объекта формы в объект JSON, который я могу отправить на серверную часть REST.
Вот форма
<form id="form">
<label for="string">string:</label><br>
<input type="text" id="string" name="string" value="string"><br>
<label for="number">number:</label><br>
<input type="number" id="number" name="number" value="12"><br><br>
<input type="submit" value="Submit">
</form>
И это функция, которую я использую для преобразования формы в объект json:
window.onload = function(){
const form = document.getElementById('form')
form.onsubmit=send
}
function send(e){
e.preventDefault()
var data=new FormData(e.target)
data=Object.fromEntries(data)
console.log(data)
}
К сожалению, FormData преобразует числовые входные данные в строки, но серверная часть ожидает фактические числа. Я знаю, что мог бы просто преобразовать их обратно в числа вручную для каждого поля формы, но это не единственная форма в приложении, и я хотел бы иметь возможность повторно использовать один и тот же код для отправки в разные конечные точки.
{
"string": "string",
"number": "12"
}
Итак, есть ли способ заставить FormData не преобразовывать числа в строку, альтернатива FormData или способ автоматического преобразования строк в числа, если исходный ввод был вводом числа?
Ответ №1:
На самом деле вы не можете отправлять целые числа, все будет в строковом формате и в парах ключ-значение, когда вы используете FormData. Кроме того, вы можете преобразовать их в требуемый тип данных в бэкэнде.Узнайте больше о FormData здесь
Комментарии:
1. почти уверен, что вы можете отправить JSON, содержащий числа, через Http Json, вы просто не можете отправлять целые числа, я только что проверил это
2. да, вы можете просто отправить данные в строковом формате JSON на сервер и преобразовать их в целое число на стороне сервера.
3. Я смог отправить целое значение на сервер, а затем оно поступило на сервер в виде целого значения. Я не знаю, что вы подразумеваете под «вы на самом деле не можете отправлять целые числа». Я имею в виду, что в какой-то момент он преобразуется, но это работает, поэтому я хочу воспользоваться этим