jquery序列化多个选择

mrr*_*rsb 1 html jquery

如何获取所有表单值并使用给定变量或数组序列化多个select?输出参数必须是;

id=1&name_1=John&name_2=Juan&name_3=Isabel&name_4=Doe
Run Code Online (Sandbox Code Playgroud)

其中,名称多重选择

Pin*_*nyM 7

正如这个答案所示,当序列化时,jQuery将使用相同的"name"值作为每个选择的键$(form).serialize():

id=1&name=John&name=Juan&name=Isabel&name=Doe
Run Code Online (Sandbox Code Playgroud)

并且它是服务器了解如何处理它.您的服务器很可能会处理它.

如果你绝对需要你提到的格式,你应该能够使用这样的东西(未经测试)一起破解它:

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);
Run Code Online (Sandbox Code Playgroud)


Ben*_*lyi 5

PHP不会处理具有相同名称的多个请求值.您可以将它们作为数组发布.为此,只需将[]添加到html元素名称标签的末尾即可.

user[]=John&user[]=Bill&user[]=Adam
Run Code Online (Sandbox Code Playgroud)

在PHP中它看起来像:

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