类型错误:序列化表单时,未定义不是函数

TypeError: undefined is not a function when serializing a form

本文关键字:未定义 函数 错误 序列化 表单 类型      更新时间:2023-09-26

我是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,但调试器甚至没有达到这一点。

更新

虽然我纠正了这个错别字(在我创建帖子时出现),但我得到了同样的错误。我试过这是火狐,我得到了TypeError: $(...).serializeObject is not a function.奇怪的是,它在jsfiddle上工作正常。

你可以使用 JQuery 的 $.serialize() 函数。

$(document).ready(function () {
    console.log("Hello there! How are you?");
    mydata = JSON.stringify($('#myform').serialize());
    console.log(mydata);
});

我会简单地使用jQuery的内置方法:

序列化:http://api.jquery.com/serialize/

参数:http://api.jquery.com/jquery.param/

或者你在那里做什么特别定制的事情?

你有一个错别字或错误,你直接在jQuery对象上使用JSON.stringify,而不是在结果上使用.serializeObject()

以前:

JSON.stringify($('#myform')).serializeObject());

后:

mydata = JSON.stringify($('#myform').serializeObject());

更新的演示:http://jsfiddle.net/gz3Lbkcj/1/

好吧,这就像重新发明轮子,但请尝试替换以下语句:

mydata = JSON.stringify($('#myform')).serializeObject());

mydata = JSON.stringify($('#myform').serializeObject());

因为stringify将返回对象的字符串表示形式,您将无法对其调用serializeObject

我的问题是我在加载 jquery 之前一直在调用我的脚本,因此我收到该错误消息。咄。我很尴尬,但想发布这个以防万一它可以使某人受益。