2012-10-17 90 views
1

如何獲取所有表單值並使用給定的變量或數組序列化多個select?輸出參數必須爲 ;jquery serialize multiple select

id=1&name_1=John&name_2=Juan&name_3=Isabel&name_4=Doe 

其中名稱多個選擇

回答

7

作爲this answer演示,jQuery將經由$(form).serialize()序列化時所使用的相同的「名稱」的值作爲對於每個選擇的關鍵在於:

id=1&name=John&name=Juan&name=Isabel&name=Doe 

這是服務器瞭解如何處理它。有可能你的服務器會處理得很好。

如果你絕對需要你提到的格式,你應該能夠破解它使用起來像這樣(未經):

var elementArray = $(form).serializeArray(); 
var modifiedArray = []; 
var counts = {}; 
var multipleValues = {}; 
$.each(elementArray, function(index, value) { 
    if (counts[value.name]){ counts[value.name] += 1; } else { counts[value.name] = 1; } 
}); 
$.each(elementArray, function(index, value) { 
    if (multipleValues[value.name] || counts[value.name] > 1){ 
    if (!multipleValues[value.name]) { multipleValues[value.name] = 0; } else { multipleValues[value.name] += 1; } 
    modifiedArray.push({name: value.name + "_" + multipleValues[value.name], value: value.value}); 
    } else { 
    modifiedArray.push({name: value.name, value: value.value}); 
    } 
}); 
var result = $.param(modifiedArray); 
+0

希望它不會崩潰,並處理我的其他多發性所有參數的選擇:) – mrrsb

+0

我怎樣才能從0開始的數組? – mrrsb

+0

@mrrsb:JavaScript中的數組已經基於0,請多解釋一下您的問題。 – PinnyM

5

PHP不會具有相同名稱的處理多個請求的值。您可以將它們作爲數組發佈。要做到這一點,只需將[]添加到html元素名稱標籤的末尾即可。

user[]=John&user[]=Bill&user[]=Adam 

在PHP中,它看起來像:

 
Array 
(
    [user] => Array 
     (
      [0] => John 
      [1] => Bill 
      [2] => Adam 
     ) 
) 
+0

對於所有使用jquery serialize()函數,使用ajax方法'post'和'select'具有'multiple'屬性的人來說,這解決了這個問題。 –