2010-10-13 113 views
1

我有一個序列化的表單信息數組(使用jQuery中的序列化功能收集),並且想向其中添加額外的信息。從我讀過的文章看來,我需要在Javascript中使用函數。不幸的是,當我嘗試這個,我得到一個錯誤消息說,「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); 
}); 

什麼我做錯了任何想法?

謝謝!

回答

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); 
}); 
+0

感謝您的回答。 – Matt 2010-10-14 17:57:31

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]); 
} 
}); 
+0

謝謝您的回答。 – Matt 2010-10-14 17:58:06

1

formData是字符串,因爲.serialize()方法返回一個字符串,它是一個html表單的JSON表示。 push方法僅適用於數組:

newArray.push('some new value'); 
+0

感謝您的回答。 – Matt 2010-10-14 18:00:05

1

您這裏有兩個問題:

  1. JavaScript的Array.push()只需要一個或多個標量,而不是另一個陣列。

  2. formData可能是一個字符串,它沒有push()

+0

感謝您的回答。 – Matt 2010-10-14 18:00:50