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"); 即可
//成功一定有方法,失败一定有原因。
<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

浙公网安备 33010602011771号