我有一系列序列化表单信息(使用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);
});
关于我做错的任何想法?
谢谢!
答案 0 :(得分:6)
其他答案几乎拥有它,你需要的是调用.serializeArray()
然后.push()
一个具有name
和value
属性的对象,例如:
$('#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)
这里有两个问题:
Javascript的Array.push()只占用一个或多个标量,但不包含其他数组。
formData
可能是一个字符串,没有push()
。