进行form表单数据提交时,我们往往需要将表单中的数据序列化成json对象,需要用到serializeObject()方法。但是jQuery并不包含此方法,需要进行自定义。
自定义的方法有两种:
1.直接在"script"标签中添加如下内容:
<script>
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
</script>
但是这样每个jsp都要添加,比较麻烦,推荐第2种。
2.把此段代码放入js中:
jsUtil.js中的内容是:
$(function(){
$.fn.serializeObject = function()
{
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
})
这样一劳永逸,只要在script中引用这个js就可以直接使用serializeObject()方法。例如:
<script type="text/javascript" src="./js/jsUtil.js"></script>
今天在网上翻了很多帖子,写的都不清楚,所以自己记录一下可行的方法。
参考链接:https://stackoverflow.com/questions/8900587/jquery-serializeobject-is-not-a-function-only-in-firefox