json FormData将数值输入字段转换为字符串

mbzjlibv  于 2023-02-14  发布在  其他
关注(0)|答案(2)|浏览(336)

我有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>

而is是我用来将表单转换为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的替代方法,或者是一种方法,如果原始输入是数字输入,可以自动将字符串重新转换为数字?

bakd9h0s

bakd9h0s1#

使用formData时,所有内容都将位于字符串formatkey-value对中。Please check here for more explanation

06odsfpq

06odsfpq2#

实际上你不能发送整数,当你使用formData时,所有的数据都是字符串格式和键-值对。或者,你可以在后端将它们转换成所需的数据类型。Know more about FormData here

相关问题