如何获取所有表单值并使用给定变量或数组序列化多项选择?输出参数必须是;
id=1&name_1=John&name_2=Juan&name_3=Isabel&name_4=Doe
名称在多选中的位置
正如这个答案所示,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);
PHP 不会处理同名的多个请求值。您可以将它们作为数组发布。为此,只需将 [] 添加到 html 元素的名称标签的末尾。
user[]=John&user[]=Bill&user[]=Adam
在 PHP 中它看起来像:
大批 ( [用户] => 数组 ( [0] => 约翰 [1] => 比尔 [2] => 亚当 ) )