通过数组中的一个索引复选框序列化

时间:2018-05-30 08:22:08

标签: javascript php jquery

我正在尝试使用随机计数的复选框序列化表单。 据我所知,$('#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

1 个答案:

答案 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));