登录  /  注册
首页 > web前端 > js教程 > 正文

尝试比较jquery的serializeArray、param 与serializeArray 的区别与用法实例详解

巴扎黑
发布: 2017-07-03 13:57:39
原创
1209人浏览过

jQuery.param( obj, traditional )

为url查询或者ajax 将对象或者数组转为url参数或ajax参数,是挂在jQuery对象上的静态方法,有码有真相:


var myInfo = {
        userid:'123',
        fullname:['henry','li'],
        intro:{html:5, css:3}            
    };
    console.log($.param(myInfo));    //"userid=123&fullname%5B%5D=henry&fullname%5B%5D=li&intro%5Bhtml%5D=5&intro%5Bcss%5D=3"
    //userid=123&fullname[]=henry&fullname[]=li&intro[html]=5&intro[css]=3"
    console.log($.param(myInfo),true);    //"a=%5Bobject+Object%5D&b=1&b=2&b=3"
    //"a=[object+Object]&b=1&b=2&b=3"
登录后复制

可以看出第二个参数类似于控制深度。

源码


// Serialize an array of form elements or a set of// key/values into a query stringjQuery.param = function( a, traditional ) {    var prefix,// 循环的键命名 for(var k in)  这里即k
        s = [],//返回的数据
        add = function( key, value ) {            //key value对应循环中每项的name和值如:<input function><h2>.serializeArray()</h2><blockquote><h4>这个是挂载在jQuery.fn方法上的,将当前jQuery <a href="http://www.php.cn/code/3464.html" target="_blank">form对象</a>转为数组对象,实例</h4></blockquote><p> </p><p class="cnblogs_code" style="background-color: #f5f5f5; border: #cccccc 1px solid; padding: 5px;"><br></p><pre class="brush:php;toolbar:false">var r20 = /%20/g,
    rbracket = /\[\]$/,
    rCRLF = /\r?\n/g,
    rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
    rsubmittable = /^(?:input|select|textarea|keygen)/i;
serializeArray: function() {        //jQuery.fn.map
        return this.map(function() {            // Can add propHook for "elements" to filter or add form elements
            // 如果当前对象具有elements的prop,则使用,反之使用自身
            // elements是原生js中表单所有的input。 如:document.forms[0].elements
            var elements = jQuery.prop( this, "elements" );            return elements ? jQuery.makeArray( elements ) : this;
        })
        .filter(function() {//jQuery.fn.filter
            var type = this.type;            // Use .is(":disabled") so that fieldset[disabled] works
            // 过滤掉没有name、disabled的、可以提交的几个标签,如过是可选中的元素,则checked为真
            return this.name &amp;&amp; !jQuery( this ).is( ":disabled" ) &amp;&amp;
                rsubmittable.test( this.nodeName ) &amp;&amp; !rsubmitterTypes.test( type ) &amp;&amp;
                ( this.checked || !rcheckableType.test( type ) );
        })
        .map(function( i, elem ) {////jQuery.fn.map
            var val = jQuery( this ).val();            //设置value
            return val == null ?                null :
                jQuery.isArray( val ) ?
                    jQuery.map( val, function( val ) {                        return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
                    }) :
                    { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
        }).get();//转为真正的数组
    }
登录后复制

其中使用的get方法就很简单了


get: function( num ) {        return num != null ? 

            // Return a 'clean' array
            ( num <p><br>至于jQuery.prop方法,需要新起一篇文章介绍了。简单的说,就是获取元素的prop。  element.checked、element.value,是从attr中分离出来的</p><h2>.serialize</h2><blockquote><h4>serialize就简单了,相当于serializeArray + parmp,将表单直接转为url查询<a href="http://www.php.cn/wiki/57.html" target="_blank">字符串</a>。代码也简单。同样是在jQuery的fn上</h4></blockquote><p> </p><p class="cnblogs_code" style="background-color: #f5f5f5; border: #cccccc 1px solid; padding: 5px;"><br></p><pre class="brush:php;toolbar:false">serialize: function() {        return jQuery.param( this.serializeArray() );
},
登录后复制

以上就是尝试比较jquery的serializeArray、param 与serializeArray 的区别与用法实例详解的详细内容,更多请关注php中文网其它相关文章!

智能AI问答
PHP中文网智能助手能迅速回答你的编程问题,提供实时的代码和解决方案,帮助你解决各种难题。不仅如此,它还能提供编程资源和学习指导,帮助你快速提升编程技能。无论你是初学者还是专业人士,AI智能助手都能成为你的可靠助手,助力你在编程领域取得更大的成就。
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
关于CSS思维导图的课件在哪? 课件
凡人来自于2024-04-16 10:10:18
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号