我是js的新手,我正在尝试序列化表单中的值,以便准备好提交到ajax。
在我的浏览器中,我收到此错误,我不确定原因:
$('#myform').serializeObject()
Uncaught TypeError: undefined is not a function
以下是我正在运行的代码:
$.fn.serializeObject = function () {
var o = {};
var a = this.serializeArray();
$.each(a, function () {
if (o[this.name] !== undefined) {
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;
};
$(document).ready(function () {
console.log("Hello there! How are you?");
mydata = JSON.stringify($('#myform').serializeObject());
console.log(mydata);
});
这是我创建的jsfiddle以简化它。我认为问题可能在serializeObject
,但调试器甚至没有达到这一点。
更新
虽然我更正了这个错误(在我创建帖子时出现),但我得到了同样的错误。我试过这是firefox,我得到了TypeError: $(...).serializeObject is not a function
。奇怪的是,它在jsfiddle上运行良好。
答案 0 :(得分:3)
您可以使用JQuery中的$ .serialize()函数。
$(document).ready(function () {
console.log("Hello there! How are you?");
mydata = JSON.stringify($('#myform').serialize());
console.log(mydata);
});
答案 1 :(得分:1)
我只想使用jQuery的内置方法:
序列化:http://api.jquery.com/serialize/
或
param:http://api.jquery.com/jquery.param/
或者你在做什么特别定制吗?
答案 2 :(得分:0)
您有错误或错误,您直接在jQuery对象上使用JSON.stringify
,而不是.serializeObject()
的结果
<强>之前:强>
JSON.stringify($('#myform')).serializeObject());
<强>后:强>
mydata = JSON.stringify($('#myform').serializeObject());
答案 3 :(得分:0)
嗯,这就像重新发明轮子,但尝试更换以下声明:
mydata = JSON.stringify($('#myform')).serializeObject());
带
mydata = JSON.stringify($('#myform').serializeObject());
由于stringify
将返回对象的字符串表示形式,您将无法在其上调用serializeObject
。
答案 4 :(得分:0)
我的问题是我在加载jquery之前一直在调用我的脚本,因此我收到了该错误消息。咄。我很尴尬,但想发布这个以防万一它可以使某人受益。