通常在使用ajax和jQuery发送表单时,方法$(this).serialize()
或$(this).serializeArray()
用于将表单转换为JSON对象。问题是JSON中的所有值都是string类型。我有一个输入有数字的表单:
<label for="name">name:</label>
<input class="w-input input" id="name" name="name" placeholder="Enter your name" type="text" required>
<label for="age">Age</label>
<input class=input" id="age" name="age" placeholder="Enter your age" type="number" required>
有没有一种方法可以将表单转换为JSON,但保留表单中所需的类型,这意味着仍然有我的输入,假设数字是JSON中的数字。
答案 0 :(得分:0)
如果您需要此行为,请使用以下自定义代码:
JS
function serialize(form_id) {
var inputs = document.getElementById(form_id).getElementsByTagName("input");
var result = []
for (var i = 0; i < inputs.length; i++) {
var value = inputs[i].type == "number" ? inputs[i].value * 1 : inputs[i].type;
var obj = {
"value": value
};
if (inputs[i].name)
obj["name"] = inputs[i].name;
result.push(obj);
}
return result;
}
和相同的HTML代码:
<form id="myform" name="myform">
<label for="name">name:</label>
<input class="w-input input" id="name" name="name" placeholder="Enter your name" value="Amr" type="text" required>
<label for="age">Age</label>
<input class="input" id="age" name="age" placeholder="Enter your age" value="19" type="number" required>
</form>
并使用:
进行测试serialize("myform");