我正在使用jQuery,特别是这个函数
$("#postStatus").serializeObject();
它在Chrome和Safari中运行得非常好,但是当我在Firefox中使用它时它不起作用。我使用Firebug来查看它给出了什么错误,我得到了这个
$("#postStatus").serializeObject is not a function
为什么这个功能在Firefox中不起作用?
... UPDATE
哦,是的,我完全忘记了它不是核心功能。我记得我搜索了一种方法来序列化表格并找到了这个解决方案;
$.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;
};
我已经设法通过将上面的函数放在JS文件的顶部来解决这个问题。谢谢你的帮助。
答案 0 :(得分:6)
AFAIK jQuery在其核心中没有定义为serializeObject
的功能。可能你正在使用插件,并且它在Firefox中存在问题,因此可以安全地假设你的脚本包含正确,尝试在准备好的处理程序中包装你的代码
$(function(e){
$("#postStatus").serializeObject();
});
或者您可以将javascript放在页面底部。
答案 1 :(得分:0)
您可能还想查看https://github.com/citnvillareal/serializeObject。
样本使用
<form>
<input type="text" name="txt01[][name]" value="Text 01" />
<input type="text" name="txt01[][phone]" value="000001" />
<input type="text" name="txt01[][name]" value="Text 02" />
<input type="text" name="txt01[][phone]" value="000002" />
<input type="submit" value="Submit" />
</form>
<script>
( function( $){
$( document ).ready( function(){
$( "form" ).submit( function( e ) {
e.preventDefault();
var jsonObject = $( this ).serializeObject();
console.log( jsonObject );
} );
} );
} )( jQuery );
</script>
控制台输出
Object
{
txt01: Array(2)
{
0: Object
{
name: Text 01
phone: 000001
},
1: Object
{
name: Text 02
phone: 000002
}
}
}
有关详情click here。
答案 2 :(得分:0)
尝试serialize()或serializeArray()而不是serializeObject()