jquery 序列化提交表单 -- serialize()、serializeArray()、serializeObject()

1、$("#form1").serialize()

     把form表单的值序列化成一个字符串,如username=admin&password=admin123

<form id="form1">
    <input name="username" type="text" value="" />
    <input name="password" type="text" value="" />
   <input id="daVal1" name="daVal1" disabled="disabled" value="daVal1" />
   <input id="daVal2" name="daVal2" disabled="true" value="daVal2" /> </form>

注意:必须存在name属性

2、$("#form1").serializeObject()

  //$("#daVal1").removeAttr("disabled");
  var dataObj = $("#form1").serializeObject();

     把form表单的值序列化成一个json对象,如{username:admin,password:admin123}

   【注】:serializeObject() 方法非 jquery 自带,需自行扩展(见文末)。

3、JSON.parse()

    将字符串解析成Json对象

var str = '{"key1": "value1","key2": "value2","key3": "value3"}';  
var obj = JSON.parse(str);  

4、JSON.stringify()

  将Json对象解析成字符串

5、$("#form1").serializeArray()

     把form表单的值序列化成一个数组,如[ {username:admin,password:admin123},  {username:admin,password:admin123} ]

常见问题

$("#form1"). serialize()后台获取不到表单中属性为disabled的元素的值的解决办法

当属性设置为"disabled"时,提交表单时,select的值无法传递,提交前移除disabled属性$("#conferenceType").removeAttr("disabled"); 即可


//成功一定有方法,失败一定有原因。
 
注:serializeObject()方法非jquery自带,需自行扩展:
<script type="text/javascript">
    //定义serializeObject方法,序列化表单
    $.fn.serializeObject = function() {
        var obj = {};
        var arrayTmp = this.serializeArray();
        $.each(arrayTmp, function() {
            if (obj[this.name]) {
                if (!obj[this.name].push) {
                    obj[this.name] = [ obj[this.name] ];
                }
                obj[this.name].push(this.value || '');
            } else {
                obj[this.name] = this.value || '';
            }
        });
     
        return obj;
    };
</script>

//$("#daVal1").removeAttr("disabled");
var dataObj = $("#form1").serializeObject();

 

参考:https://www.cnblogs.com/webapi/p/10550185.html、https://blog.csdn.net/f_470107520/article/details/81635910

 
posted @ 2021-01-10 21:51  water-droplet  阅读(664)  评论(0)    收藏  举报