我使用jQuery serialize()
创建了一个URL,它创建了这样的内容:
客户编号= 4和;起始日期&安培;客户编号= 5
问题是我希望有一个这样的数组的URL:
客户编号[] = 4和;起始日期&安培;客户编号[] = 5
答案 0 :(得分:1)
正在序列化的输入元素的[name]
必须包含[]
才能生成那些与PHP兼容的查询字符串。
$(function () {
$('form').on('submit', function (e) {
$('pre').text($(this).serialize());
e.preventDefault();
});
});

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="text" name="example1">
<input type="text" name="example1">
<input type="text" name="example2[]">
<input type="text" name="example2[]">
<input type="submit" value="Serialize">
</form>
<pre></pre>
&#13;
注意:密钥会显示%5B%5D
而不是[]
。这是预期的,因为这是[]
的正确URL编码。
答案 1 :(得分:0)
如果我理解了您的问题,您希望将[]
附加到重复的查询字符串项。
JavaScript解决方案是在表单上使用.serializeArray()
,标记重复的键/值对,将[]
添加到重复项的名称属性中,然后将对象转换回来使用$.param()
查询字符串。
function serializeWithDuplicates(form) {
var pairs = $(form).serializeArray();
for (i = 0; i < pairs.length; i++)
for (j = i + 1; j < pairs.length; j++)
if (pairs[i].name === pairs[j].name)
pairs[i].isDuplicate = pairs[j].isDuplicate = true;
for (i = 0; i < pairs.length; i++)
if (pairs[i].isDuplicate)
pairs[i].name += "[]";
return $.param(pairs);
}