1

如果复选框被选中,我正在使用以下 ajax javascript 来传递值,我面临的问题是它仅适用于 mysql fetch aray 的第一行,而对于其余结果,它总是发送 checkboxstatus = 1 因此,无论复选框是否被选中。这是代码:

<script>
 $(document).ready(function(e) {
   $('input[name=status]').change(function(){
    if( $('input[name=status]').prop('checked') )
       {checkboxstatus = '1';}
       else
       {checkboxstatus = '0';}
        var idm = $(this).attr('idm');
        $.ajax({
        type: "POST",
        url: "checkboxtestbackend.php",
        data: {"checkboxstatus": checkboxstatus,
        "idm":idm 
       },
        })        
        .fail(function(jqXHR, textStatus, errorThrown){alert(jqXHR+"--"+textStatus+"--"+errorThrown);});
    });//end change
  });//end ready
</script>

通常,如果我取消检查复选框,它将 POST 的 0 作为 value ,则在第一个 sql fetch 中检查所有 checkgoxes,但对于其余的 sql fetch 结果,无论是否选中,它总是发送“1”作为 POST 结果。

这是显示复选框的代码:<?php echo "<input type='checkbox' idm='$idm' name='status'"; if($row['status'] == 1){print "checked='checked'"; }echo "/>";?>

复选框状态的可视化正在工作,但没有进行更改。

这是它的 sql 查询:

$sql = "SELECT * FROM cursos ORDER BY id DESC";
if (!$result = mysqli_query($con,$sql))
{
    die("Error: " . mysqli_error($con));
}


<?php

while($row = mysqli_fetch_array($result))
{   
    $idm = $row['id'];
?>

<td align="center"><?php echo "<input type='checkbox' idm='$idm' name='status'"; if($row['status'] == 1){print "checked='checked'"; }echo "/>";?></td>
4

2 回答 2

1

这对我有用...

$('input[name=status]').prop('checked')改为$(this).prop('checked').

<input type="checkbox" idm="stuff" name="status" value="1">
<input type="checkbox" idm="stuff" name="status" value="2">
<input type="checkbox" idm="stuff" name="status" value="3">  

<script>
 $(document).ready(function(e) {
$('input[name=status]').change(function(){
    if( $(this).prop('checked') ) {checkboxstatus = '1';}
                             else {checkboxstatus = '0';}
        var idm = $(this).attr('idm'); 
        $.ajax({
           type: "POST",
           url: "checkboxtestbackend.php",
           data: {"checkboxstatus": checkboxstatus, "idm":idm },
           success: function(response){
              console.log(response);  
             }
        })        
        .fail(function(jqXHR, textStatus, errorThrown){alert(jqXHR+"--"+textStatus+"--"+errorThrown);});
});//end change
});//end ready 
</script>
于 2013-11-06T20:10:06.580 回答
1

请试试这个,

  $(document).ready(function(e) {
     $('.CheckBoxClass').click(function(){  // added class based event  
           if( $(this).is(':checked')) {
               checkboxstatus = '1';
             } else {
               checkboxstatus = '0';
              }             
             var idm = $(this).attr('idm');
                 $.ajax({
                     type: "POST",
                     url: "checkboxtestbackend.php",
                     data: {"checkboxstatus": checkboxstatus,
                        "idm":idm 
                        },
                 })        
             .fail(function(jqXHR, textStatus, errorThrown){alert(jqXHR+"--"+textStatus+"--"+errorThrown);});
            });//end click
     });//end ready

在 PHP 代码中,添加了 class='CheckBoxClass'

<?php   
    echo "<input type='checkbox' idm='$idm' class='CheckBoxClass' name='status'"; if($row['status'] == 1){ print "checked='checked'"; }echo "/>";
?>
于 2013-11-06T20:10:07.563 回答