我正在尝试使用随机计数的复选框序列化表单。
据我所知,$('#selector').serializeArray();
正在序列化数组中每个单个索引的每个复选复选框(下面的示例)。我不能在PHP中获取这些数据,因为它总是随机计算复选框,我需要知道如何使用meany索引。
我可以序列化表单并将所有复选框放在一个索引数组中吗?
序列化后的控制台日志:
9: Object { name: "course", value: "1" }
10: Object { name: "course", value: "2" }
11: Object { name: "course", value: "3" }
9,10,11 - 有三个索引,但我只需要一个索引。
示例:
9: Object {0- name: "...", value:"...", 1- name:"..." value: "...", etc.}
<form id="my-form">
<input name="name" type="text" value="my-name">
<input name="surname" type="text" value="surname">
<input name="email" type="text" value="email">
<input type="checkbox" name="course-1" id="" value="1">
<input type="checkbox" name="course-2" id="" value="2">
<input type="checkbox" name="course-3" id="" value="3">
<input type="checkbox" name="course-4" id="" value="4">
<input type="checkbox" name="course-5" id="" value="5">
</form>
var data = $('#my-form).serializeArray();
console.log(data);
我需要序列化表单并获取所有已选中但未选中的复选框。在PHP中,它给了我:
$_POST['course-1']= 1
$_POST['course-2']= 2
$_POST['course-3']= 3
需要类似:
$_POST['courses']['course-1']= 1
$_POST['courses']['course-2']= 2
$_POST['courses']['course-3']= 3
答案 0 :(得分:0)
您不能在JS对象中使用具有相同名称的多个键(在您的情况下为value
)。
如果你真的想要只有一个 Object
(我不推荐它,这是一种可怕的方式),你可以使用如下模式:
{
name0: 'course',
value0: '1',
name1: 'course',
value1: '2',
...
}
为此,您可以使用for
循环:
// var selected = $('#selector').serializeArray();
var selected = [
{
name: 'course', value: '1'
}, {
name: 'course', value: '2'
}, {
name: 'course', value: '3'
}
];
var encapsulated = {};
for (var i = 0; i < selected.length; i++) {
var item = selected[i];
encapsulated["name" + i] = item.name;
encapsulated["value" + i] = item.value;
}
console.log(JSON.stringify(encapsulated, null, 2));