jQuery序列化元素

学习了一下jQury序列化,分为两个方法,整理如下:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>测试</title>
    <script src="./jquery-1.8.1.min.js" type="text/javascript"></script>
    <script>
        $(function(){
            $("#sendButton").click(function(){
                //方法1 serialize()方法,该方法作用于一个jQuery对象,能够将DOM元素内容序列化成字符串
                //该方法能够对中文进行编码处理,相应的需要进行解码处理
                //该方法的核心是$.params()方法,用来将一个数组或者对象按照k/v进行序列化
                var obj1 = $("#testForm").serialize();
                console.log(decodeURIComponent(obj1,true));

                //方法2 serializeArray()方法,将用作提交的表单元素的值编译成拥有name和value对象组成的数组。例如[ { name: a value: 1 }, { name: b value: 2 },...]
                var obj2 = $("#testForm").serializeArray();
                console.log(obj2);
            })
        })
    </script>
</head>
<body>
    <form id="testForm" action="#">
        <input name = "name" placeholder="姓名"/>
        <input name = "age" placeholder="年龄"/>
        <input name = "height" placeholder="身高"/>
        <input name = "hometown" placeholder="家乡"/>
        <input id="sendButton" type="button" value="click"></input>
    </form>
</body>
</html>

795862-20161111145316952-2046103037.png
795862-20161111145451624-1093444225.png
API中并没有提供直接序列化成json对象的方法,可以在现有方法的基础上,稍作修改即可:

<script type="text/javascript">  
    $(function() {  
        $("#sendButton").click(function() {  
                var datas = $("#testForm").serializeJsonObj(); 
                console.log(datas);  
            })  
    })        
    $.fn.serializeJsonObj = function() {  
        var result = {};  
        var temp = this.serializeArray();  
        $.each(temp, function() {  
            if (result[this.name]) {  
                if (!result[this.name].push) {  
                    result[this.name] = [ result[this.name] ];  
                }  
                result[this.name].push(this.value || '');  
            } else {  
                result[this.name] = this.value || '';  
            }  
        });  
        return result;  
    }  
</script>

795862-20161111145528733-388121401.png

转载于:https://www.cnblogs.com/xieshuang/p/6054272.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值