Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery 为多个同名字段获取JSON格式的表单数据_Jquery_Json - Fatal编程技术网

Jquery 为多个同名字段获取JSON格式的表单数据

Jquery 为多个同名字段获取JSON格式的表单数据,jquery,json,Jquery,Json,您好,我正在构建一个表单表,其中的行有多个相同的名称。我想在使用插件的地方提交JSON格式的表单表。 链接- 使用$(“#form”).serializeJSON()。这样我只得到JSON格式的最后一个字段。它正在替换所有同名字段,并已将其替换为最后一个字段 我希望以JSON格式显示所有字段。 例如- [ { "field1": "id1", "field2": "dsda", "field3": "dsda", }, {

您好,我正在构建一个表单表,其中的行有多个相同的名称。我想在使用插件的地方提交JSON格式的表单表。 链接-

使用
$(“#form”).serializeJSON()。这样我只得到JSON格式的最后一个字段。它正在替换所有同名字段,并已将其替换为最后一个字段

我希望以JSON格式显示所有字段。 例如-

[
    {
        "field1": "id1",
        "field2": "dsda",
        "field3": "dsda",
    },
    {
        "field1": "id2",
        "field2": "dsda",
        "field3": "dsda",
    },
    {
        "field1": "id3",
        "field2": "dsda",
        "field3": "dsda",
    },
]
相反,我只得到-

[
    {
        "field1": "id3",
        "field2": "dsda",
        "field3": "dsda",
    },
]
这是我的密码-

$(“#按钮”)。单击(函数(){
var jsonForm=$(“#form”).serializeJSON();
log(jsonForm);
});

字段1
字段2
字段3
连载

一个表单中不能有两个或多个同名字段,相反,您需要通过在每个同名字段的名称末尾添加[]来告诉html它是一个数组,例如

<tr>
    <td><input type="text" name="field1[]"></td>
    <td><input type="text" name="field2[]"></td>
    <td><input type="text" name="field3[]"></td>
</tr>
<tr>
    <td><input type="text" name="field1[]"></td>
    <td><input type="text" name="field2[]"></td>
    <td><input type="text" name="field3[]"></td>
</tr>


这没有提供他想要的输出。这将是
{field1:[“id1”,“id2”,“id3”],…}
好的,serializeJSON在jQuery中不是一个函数,所以他可能使用一些自定义函数,但是如果没有这个修复程序,他将无法序列化表单数据。使用这个serializeFormJSON函数和我提供的修复程序会给他带来他想要的类似结果。你的解决方案肯定对我和其他很多人都有帮助。我只是想澄清一个概念。在输入名称末尾添加[]不会改变HTML中的任何内容,它会像以前一样发送数据。它是服务器端,它将数据处理成一些有用的东西,比如数组。