码迷,mamicode.com
首页 > Web开发 > 详细

jquery serialize()方法的扩展

时间:2015-09-17 15:00:58      阅读:206      评论:0      收藏:0      [点我收藏+]

标签:

Jquery提供的序列化表单方法serialize方法确实方便,但是我在使用的时候发现了一个弊端:当我使用type:“post”进行ajax请求的时候,

这个时候参数data:$("#myform").serialize()是这样获取的,请求之后发现还是一个get请求,参数被拼接在了地址后面,并不是实际意义的post请求,

这里可以扩展Jquery库方法,如下代码:  

  

jQuery.fn.extend({
    serialize: function() {
        return jQuery.param( this.serializeArray() );
    },
    serializeArray: function() {
        return this.map(function(){
            return this.elements ? jQuery.makeArray( this.elements ) : this;
        })
        .filter(function(){
            return this.name && !this.disabled &&
                ( this.checked || rselectTextarea.test( this.nodeName ) ||
                    rinput.test( this.type ) );
        })
        .map(function( i, elem ){
            var val = jQuery( this ).val();

            return val == null ?
                null :
                jQuery.isArray( val ) ?
                    jQuery.map( val, function( val, i ){
                        return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
                    }) :
                    { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
        }).get();
    },
    serializeObject:function(){  //扩展方法,为了直接生成对象-属性类型的参数集合,这样就实现了真正意义的post提交,参数隐藏
        var _arrayParams=this.serializeArray();
        var _objParams={};
        jQuery.each(_arrayParams,function(_fpi,_fpitem){
            _objParams[_fpitem.name]=_fpitem.value;
        });
        return _objParams;
    }
});

 

jquery serialize()方法的扩展

标签:

原文地址:http://www.cnblogs.com/Brose/p/4816286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!