添加到现有阵列

时间:2010-10-13 21:41:06

标签: jquery arrays

我有一系列序列化表单信息(使用jQuery中的序列化功能收集),并希望向其中添加其他信息。从我读过的内容来看,我需要在Javascript中使用 push 功能。不幸的是,当我尝试这个时,我收到一条错误消息,指出'formData.push不是函数'

我的代码:

$('#sendForm').live('click',function(){
 var formData = $('#form').serialize();
 alert(formData); //Returns as expected

var newArray = ['test','test2'];  //The new data....
formData.push(newArray);
});

关于我做错的任何想法?

谢谢!

4 个答案:

答案 0 :(得分:6)

其他答案几乎拥有它,你需要的是调用.serializeArray()然后.push()一个具有namevalue属性的对象,例如:

$('#sendForm').live('click',function(){
   var formData = $('#form').serializeArray();
   formData.push({ name: 'nameOfParam', value: 'valueOfParam' });
   //use formData, for example:
   //$.post("page.html", formData);
   //if you want the serialized string like .serialize(), use $.param(formData);
});

答案 1 :(得分:1)

问题是.serialize()返回一个字符串,你不能推入一个字符串。我想你想使用jQuery .serializeArray()而不是.serialize()

假设您需要所有元素的单个数组,您需要执行类似这样的操作,因为将一个数组推入另一个数组会在数组中为您提供数组...

$('#sendForm').live('click',function(){
 var formData = $('#form').serializeArray();

var newArray = ['test','test2'];  //The new data....
for(i=0;i<newArray.length;i++)
 {
   formData.push(newArray[i]);
 }
});

答案 2 :(得分:1)

formData是一个字符串,因为.serialize()方法返回一个字符串,该字符串是html表单的JSON表示形式。 push方法仅适用于数组:

newArray.push('some new value');

答案 3 :(得分:1)

这里有两个问题:

  1. Javascript的Array.push()只占用一个或多个标量,但不包含其他数组。

  2. formData可能是一个字符串,没有push()