【问题标题】:Problem serializing checkboxes with jQuery and PHP使用 jQuery 和 PHP 序列化复选框的问题
【发布时间】:2011-11-14 11:33:36
【问题描述】:

我有想要发送到 PHP 控制器的复选框(都具有相同的“名称”属性)。这是我的标记的简短 sn-p:

<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() 提供的参数无效”之类的错误,因为我认为除了第一个值之外它没有获得任何其他值。我哪里错了?

【问题讨论】:

    标签: php jquery serialization checkbox foreach


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我需要更改我的 jQuery 调用吗?我发送表格的唯一方式是jQuery.post()
    • 不,您不需要更改 jQuery 代码; serialize() 可以使用它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多