问题是使用jQuery和PHP序列化复选框

hoh*_*ner 0 php checkbox foreach jquery serialization

我有要发送给PHP控制器的复选框(都具有相同的'name'属性).这是我的标记的简短片段:

<script type="text/javascript">
$(document).ready(function(){
   $(".someButton").click(function(){
      $.post("my_controller.php",$("#userForm").serialize());
   });
});
</script>   

<?php 
echo '<form id="userForm">';
foreach($users as $user)
{
   echo '<input name="user_id" value="'.$user->id.'">';
}
echo '</form>';
?>
Run Code Online (Sandbox Code Playgroud)

然后,我希望我的控制器将这些值作为统一数组发送到模型,然后可以执行foreach语句.控制器逻辑应该(我认为)是这样的:

foreach($_POST['user_id'] as $user_id)
{
   $user_array[] = $user_id;
}
$this->model->method($user_array);
Run Code Online (Sandbox Code Playgroud)

但我不断收到诸如"为foreach()提供的无效参数"之类的错误,因为除了第一个之外,我认为它没有得到任何其他值.我哪里错了?

Arn*_*anc 5

如果您有多个具有相同名称的复选框,并希望将它们作为已选中复选框的数组发送[],请在复选框名称中添加后缀:

<input type="checkbox" name="user_id[]" value=... />
Run Code Online (Sandbox Code Playgroud)

然后在PHP中你可以这样做:

$user_array = isset($_POST['user_id']) ? $_POST['user_id'] : array();
Run Code Online (Sandbox Code Playgroud)