【问题标题】:jQuery push() returns error "undefined is not a function"jQuery push() 返回错误“未定义不是函数”
【发布时间】:2014-11-11 12:30:33
【问题描述】:

提交表单“未定义不是第 21 行中的函数”时,此代码给我一个错误,我不知道为什么

$.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;
};

$("form[name=dForm]").submit(function(ev){
        ev.preventDefault();
        var data = $(this).serializeObject();
        data.push({name:"bonjour",value:bonjour});

 // do something here ...

})

或者它必须是一个数组而不是一个对象?

【问题讨论】:

  • 看起来 data 是一个对象而不是数组..
  • push 是一个 Javascipt 函数。不是jQuery的
  • 是的,我不知道如何在数组中制作它。因为我有多个具有相同选择器的表单

标签: javascript jquery arrays ajax object


【解决方案1】:

serializeObject 返回o,在函数顶部定义为{}

push 是 Array 对象的方法,而不是普通对象。它将一个项目放在数组的末尾。

普通对象是无序的。没有“结束”来放置项目,所以有一个 push 方法是没有意义的。

您大概只想创建一个具有给定名称和值的新属性。

data.push({name:"bonjour",value:bonjour});

应该是

data.bonjour = bonjour;

【讨论】:

  • @Shashank — 这与任何事情有什么关系?这是关于分配一个新值,而不是读取现有值。
猜你喜欢
  • 2023-02-07
  • 2015-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-03
  • 2023-03-13
相关资源
最近更新 更多