有没有办法发送包含整数和字符串的表单数据?

时间:2016-09-26 00:27:37

标签: jquery json ajax html5 forms

通常在使用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中的数字。

1 个答案:

答案 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");