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

时间:2011-09-10 18:25:19

标签: php jquery serialization checkbox foreach

我有要发送给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>';
?>

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

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

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

1 个答案:

答案 0 :(得分:5)

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

<input type="checkbox" name="user_id[]" value=... />

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

$user_array = isset($_POST['user_id']) ? $_POST['user_id'] : array();