1. 程式人生 > >表單陣列封裝成Json物件陣列

表單陣列封裝成Json物件陣列

最近在搗鼓著Json與ajax結合傳遞資料到後臺。在這此前寫過Gson處理前端傳遞過來的Json物件陣列所以接著寫一下如何把表單陣列封裝成Json物件。

場景:需要把表格中的表單轉化為一個Json物件

我通過使用jQuery的相關方法實現表單資料的序列化,其中:
1.serialize( )方法是把表單內容序列化為一個字串
格式:var data =$(“#form”).serialize();

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
  <head>
    <title
>
test.html</title> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="this is my page"> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <script src="jquery-3.1.1.min.js"></script
>
<script type="text/javascript"> /*使用了jq的.serialize() 輸出:username=tony&age=12&username=czt&age=22 */ function test(){ var data=$("#formId").serialize(); alert(data); }; </script> </head> <body> <form
action="" id="formId" method="post">
姓名:<input type="text" name="username" value="tony"/> 年齡:<input type="text" name="age" value="12"/><br> 姓名:<input type="text" name="username" value="czt"/> 年齡:<input type="text" name="age" value="22"/><br> <input type="submit" onclick="test()" value="提交"> </form> </body> </html>

2.serialzeArray( )是把表單序列化為一個Json結構的物件,而不是我們所想要的Json字串
格式:var data=$(“#formId”).serializeArray( );

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN">
<html>
  <head>
    <title>test.html</title>

    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    <script src="jquery-3.1.1.min.js"></script>
    <script type="text/javascript">
        $.fn.serializeObject=function(){
            var json={};
            var map=this.serializeArray();
            $.each(map,function(){
                if(json[this.name]){
                    if(!json[this.name].push){
                        json[this.name]=[json[this.name]];
                    }
                    json[this.name].push(this.value ||'');
                }else{
                    json[this.name]=this.value||'';
                }
            });
            return json;
        };
        function test(){
            /*輸出:
            [{"name":"username","value":"tony"},{"name":"age","value":"12"},{"name":"username","value":"tony"},{"name":"age","value":"12"}]
            這個方法輸出的內容不是我們所想要的,所以我們要做寫js功能對多得到的結果進行改造,為此我添加了**serializeObject( )**
            */
            var data=$("#formId").serializeArray();
            var datastring=JSON.stringify(data);
            alert(datastring);

            /*改造後輸出:{"username":["tony","czt"],"age":["12","22"]},當我們得到這樣的Json資料格式後,就可以傳遞給後臺了。後臺也可以根據這個Json解析,得到想要的資訊*/
            var jsonuserinfo=$("#formId").serializeObject();
            alert(JSON.stringify(jsonuserinfo));

        };
    </script>
  </head>
  <body>
    <form action="" id="formId" method="post">
        姓名:<input type="text" name="username" value="tony"/>
        年齡:<input type="text" name="age" value="12"/><br>
        姓名:<input type="text" name="username" value="czt"/>
        年齡:<input type="text" name="age" value="22"/><br>
        <input type="submit" onclick="test()" value="提交">
    </form>
  </body>
</html>

通過上述的辦法可以把表單封裝到Json中並傳遞給後臺。