发布已检查的复选框值,使用jquery动态生成到php

时间:2014-02-11 03:34:08

标签: php jquery html mysqli

我有一个从MySQL表值动态生成的表。每个列出的记录都有一个复选框。

list.php的

$query="SELECT * FROM drivers ORDER BY name";
$query=$mysqli->query($query);
$queryN=mysqli_num_rows($query);
if($queryN!=0){
   while($row=mysqli_fetch_assoc($query)){
       $id=$row['id'];
       $name=$row['name'];

       $output .='<tr id="'.$id.'">
                  <td>'.$name.'</td>
                  <td><input type="checkbox" name="assign" class="assigned" value='.$id.'"/></td>
                  </tr>';
  }
}else{
       $output .='<tr>
                  <td colspan="2">No data found</td>
                  </tr>';
}

HTML文件

<input type="button" name="send" id="send" value="Send" />

现在,JQuery脚本将仅发送表格中已选中复选框的值:

<script>

$(document).ready(function(){
    $('.send').click(function(){

        var checkValues = $('input[name=assign]:checked').map(function()
        {
            return $(this).val();
        }).get();

        $.ajax({
            url: 'assigndriver.php',
            type: 'post',
            data: { ids: checkValues },
            success:function(data){

            }
        });
    });
});

</script>

最后,PHP文件assigndriver.php将插入数组,其值仅为已选中的复选框:

   include "../connect_to_mysql.php";

   $id = array();

   if(isset($_POST['ids'])){

    $id  = $_POST['ids'];
        for ($i = 0; $i < count($id); $i++) {
             $id_new = $id[$i];
             $sql="INSERT INTO teste (campo) VALUES ('$id_new')";    
        }     
    }

好吧,我想知道为什么它不起作用,如果以这种方式复选框的正确值,那必须是变量$ id正确地发布到PHP文件。

谢谢

4 个答案:

答案 0 :(得分:2)

尝试改变:

$('.send').click(

为:

$('#send').click(

因为您将id="send"而不是class="send"分配给输入按钮

答案 1 :(得分:0)

您应该将复选框的名称更改为name =&#34;某些内容[]&#34;。所以它会知道它是一个数组,值将正确发布。希望这会对你有所帮助。

答案 2 :(得分:0)

在jquery中,您使用ID 发送调用发送按钮,但在调用该功能时,您使用运算符运算符。< / p>

<强>差分

  the difference between "." operator and "#" operator is when you calling a 
  class you should use "."  operator.

  Example:
          HTML:
               <input type="button" name="send" class="send" value="Send" />  

         JQUERY:
                $('.send').click(function(){

                     //insert your code here..
                });


  but if you are going to call an id of a html element than use "#" operetor  

  Example: 
          HTML:
               <input type="button" name="send" id="send" value="Send" 
                onclick="send_data();" />



         JQUERY:
                 function send_data(){
                 $('#send').click(function(){

                     //insert your code here..
                });}

希望它能帮到你......

答案 3 :(得分:0)

将每个选中复选框的值发布到PHP文件的正确方法是执行以下脚本:     

$(document).ready(function(){
    $('#btnadd').click(function(){

        var checkValues = $('input[name="assign[]"]:checked').map(function()
        {
            return $(this).val();
        }).get();

        $.ajax({
            url: 'assigndriver.php',
            type: 'post',
            data: { ids: checkValues },
            success:function(data){

            }
        });
    });
});

另外,我们需要更改PHP文件中的动态输出:

$output .='<td align="center"><input type="checkbox" name="assign[]" id="add_driver'.$id.'" value="'.$id.'"/></td>';

如果选中该复选框,则会正确发布值。