TypeError:undefined在序列化表单时不是函数

时间:2015-01-15 01:13:32

标签: javascript jquery json

我是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上运行良好。

5 个答案:

答案 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());

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

答案 3 :(得分:0)

嗯,这就像重新发明轮子,但尝试更换以下声明:

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

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

由于stringify将返回对象的字符串表示形式,您将无法在其上调用serializeObject

答案 4 :(得分:0)

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