Javascript 如何将表单字段转换为Json对象?

Javascript 如何将表单字段转换为Json对象?,javascript,html,json,Javascript,Html,Json,例如,表单包含具有以下名称的字段:txt01、txt02、txt03[]、txt03[]、txt04[name][]、txt04[name][]、txt04[phone][]、txt04[phone][]、txt05[][name]、txt05[][name]、txt05[][phone]。当我向这些字段输入值并单击submit按钮时,它将生成以下Json对象: Object { txt01: "Text 01", txt02: "Text 02", txt03: Arr

例如,表单包含具有以下名称的字段:txt01、txt02、txt03[]、txt03[]、txt04[name][]、txt04[name][]、txt04[phone][]、txt04[phone][]、txt05[][name]、txt05[][name]、txt05[][phone]。当我向这些字段输入值并单击submit按钮时,它将生成以下Json对象:

Object {
    txt01: "Text 01",
    txt02: "Text 02",
    txt03: Array(2) {
        0: "Text 01",
        1: "Text 02"
    },
    txt04: Object 
    {
        name: Array()
        {
            0: Text 01
            1: Text 02
        },

        phone: Array()
        {
            0: 000001
            1: 000002
        }
    },
    txt05: Array(2) 
    {
        0: Object
        {
            name: Text 01
            phone: 000001
        },

        1: Object
        {
            name: Text 02
            phone: 000002
        }
    }

}
下面是要序列化为Json对象的表单。执行序列化的脚本应生成上述Json对象

<form>
    <input type="text" name="txt01" value="Text 01" />
    <input type="text" name="txt02" value="Text 02" />

    <input type="text" name="txt03[]" value="Text 01" />
    <input type="text" name="txt03[]" value="Text 02" />

    <input type="text" name="txt04[name][]" value="Text 01" />
    <input type="text" name="txt04[name][]" value="Text 02" />
    <input type="text" name="txt04[phone][]" value="000001" />
    <input type="text" name="txt04[phone][]" value="000002" />

    <input type="text" name="txt05[][name]" value="Text 01" />
    <input type="text" name="txt05[][phone]" value="000001" />
    <input type="text" name="txt05[][name]" value="Text 02" />
    <input type="text" name="txt05[][phone]" value="000002" />

    <input type="submit" value="Submit" />
</form>

这是从


你可以试着四处寻找一些听起来很多人都可以使用的东西:)

我在这里做了一些研究,但我没有找到适合我所做的事情的答案,所以我创建了一个解决方案。有关更多详细信息,请访问此处


请毫不犹豫地作出贡献。我希望这能有所帮助。

我只是想分享一下我的想法。我只是使用本机javascript开发了一个json应用程序表单。您可以访问此链接:

示例表单

<form name="f1" onsubmit="return formToJson(this);">
   <input type="text" name="username" value="dummyuser" / >
   <input type="password" name="password" value="password123" />
   <input type="submit" />
</form>

这也将把大多数表单元素(包括HTML5)映射到JSON数据中。希望这对你有帮助

仍然不清楚要求,但我想你可以这样做

 var frm = $('form');
 var data = JSON.stringify(frm.serializeArray());

你需要再解释一点,可能会显示一些HTML,以及你目前是如何尝试这样做的?@Varun已经提出了一个解决方案,你可能想看看这个。但如果你能从中有所贡献,请不要犹豫。我将不胜感激。根据请求,我还添加了表单。我已经尝试过了,但它只是将字段名直接映射为object的索引。JSON.stringify函数只会将serializeArray生成的对象转换为String。澄清问题:提交表单后,您应该能够将表单字段转换为json对象。虽然此代码片段可以解决问题,但确实有助于提高帖子的质量。请记住,您将在将来回答读者的问题,这些人可能不知道您的代码建议的原因。还请尽量不要用解释性注释挤满你的代码,这会降低代码和解释的可读性!
{
 username:"dummyuser",
 password:"password123"
}
 var frm = $('form');
 var data = JSON.stringify(frm.serializeArray());
var myObj = new Object();
myObj.text01 = "Text 01";
myObj.text02 = "Text 02";
.
.
.
var string =JSON.stringify(myObj);