多选在php中选中复选框

时间:2013-12-12 06:23:11

标签: php ajax

我正在建立一个网站,我将使用多个复选框嵌入删除功能。这是我的代码。我的问题是 1. Ajax调用不起作用。 2.如何从数据库中搜索数组。

    <?php
if(isset($_POST['Delete']))
{
    $array=$_POST['check_box'];

    }
?>
<form method="post" id="form">
<table width="200" border="1">
  <tr>
    <td>select</td>
    <td>NAme</td>
    <td>Action</td>
  </tr>

  <?php
  while($selectnumberarr=mysql_fetch_array($selectnumber))
  {
  ?>
  <tr>

    <td><input type="checkbox" name="check_box[]" class="check_box" id="<?php $selectnumberarr[0]; ?>" /> </td>
    <td><?php echo $selectnumberarr[1]; ?></td>

  </tr>
  <?php
  }?>
  <input type="submit" name="Delete" id="delete">


</table>
</form>

以下是我的ajax和javascript代码。

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
    $('#delete').click(function() {

        $.ajax({
            type: "POST",
            url: "checkbox.php",
            data: $('#form').serialize(),
            cache: false,
            success: function(html)
            {
                alert("true");
            }
        });//end ajax
    });
}); 
 </script>

任何帮助都是适当的

2 个答案:

答案 0 :(得分:2)

你的代码几乎是正确的。您需要删除`onChange =“show()”以获取输入复选框,因为如果您有jquery,那么您不需要将事件放在HTML元素上。

使用jquery 'on'方法兼容最新的php库。

用以下jquery代码替换你的jquery代码: -

<script>
$(document).ready(function(){
  $('#delete').on('click',function()
  {

       var cat_id = $('.check_box:checked').map(function() {
           return this.id;
         }).get().join(',');
                 console.log(cat_id);

      $.ajax({
          type: "POST",
          url: "checkbox.php",
          data: { "kw ":cat_id },
          datatype:'json',
          success: function(html)
          {
              alert("true");
          }
      });//end ajax

  });
});
</script>

在jquery中使用“.check_box”而不是“element”来阻止检查所有复选框,而不是所需的复选框。

希望它有所帮助。

答案 1 :(得分:0)

为什么不使用数组发送复选框,如:

HTML部分:

<?php
if (isset($_POST['check_box'])) {
    var_dump($_POST['check_box']);
    echo "ajax call is working";
}
?>
<form id="form">
    <table width="200" border="1">
        <tr>
            <td>select</td>
            <td>NAme</td>
            <td>Action</td>
        </tr>

        <?php
        while ($selectnumberarr = mysql_fetch_array($selectnumber)) {
            ?>
            <tr>
                <td><input type="checkbox" name="check_box[]" class="check_box" value="<?php echo $selectnumberarr[0]; ?>" /> </td>
                <td><?php echo $selectnumberarr[1]; ?></td>

            </tr>
            <?php
        }
        ?>
    </table>
    <input type="button"name="delete" id="delete" value="Delete" />
</form>

JQuery部分:

<script type="text/javascript">
$(document).ready(function(){
    $('#delete').click(function() {

        $.ajax({
            type: "POST",
            url: "checkbox.php",
            data: $('#form').serialize(),
            cache: false,
            success: function(html)
            {
                alert("true");
            }
        });//end ajax
    });
}); 
</script>

因此,您可以轻松地在php中获取所选复选框的数组:

$idsArray = $_POST["check_box"];

现在看起来像:

array(
"1", "2","etc.."
);

所以这个数组包含了所选复选框的所有ID。