ajax查询后设置复选框状态

Posted

技术标签:

【中文标题】ajax查询后设置复选框状态【英文标题】:Set checkbox state after ajax query 【发布时间】:2013-11-16 14:01:18 【问题描述】:

根据mysql 数据库中的值,我希望选中或取消选中复选框。尽管ajax 查询获得了正确的值,但复选框始终保持选中状态

Jquery

<script type="text/javascript">
        $(document).ready(function() 
            $.ajax(
                type: "POST",
                url: "ajax/get_db_settings.php",
                dataType: "json",
                data: 'user='+1,
                success:function(response)
                    var taken_by_on = response.taken_by;
                    alert(taken_by_on);
                    if(taken_by_on = 0)
                        $('.taken_by_input').attr('disabled',true).css('color','#F0F0F0');
                        $('#taken_by_enable').prop('checked', false);
                    else if(taken_by_on = 1)
                        $('.taken_by_input').attr('disabled',false).css('color','#000');
                        $('#taken_by_enable').prop('checked', true);
                    
                ,error:function (xhr, ajaxOptions, thrownError)
                alert(thrownError);
             
         ); 
    );
</script>

get_db_settings.php

$user_id = $_POST['user'];   
$sql = "SELECT * FROM user WHERE userID = $user_id";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
if($result)
   $row = mysqli_fetch_array($result); 
   $taken_by_on = $row['takenByOn'];

   $output_array = array(
        'taken_by' => $taken_by_on
    );

echo json_encode($output_array);

html

<form name="add_positioning" class="postable" id="add_positioning">
<table border="0" class="autoTable_pos">
<tr>
  <td colspan="2" style="text-align:left">Enable <input style="width:10px" 
   type="checkbox" name="taken_by" id="taken_by_enable">
  </td>
</tr>
<?
$sql= "SELECT * FROM gradeReason WHERE reason_userID = $id AND category = 'positioning' AND current = 1 ORDER BY reasonID";
$result = mysqli_query($mysqli,$sql) or die(mysqli_error($mysqli));
while($row = mysqli_fetch_array($result))?>
<tr>
  <td>
  <input type="text" class="taken_by_input outline ie7_td"
   name="reason[][<? echo $row['reasonID']; ?>]" value="<? echo $row['reason_name']; ?>"/>
  </td>
  <td><input type="button" name="delete_pos" value="" 
  class="taken_by_input delRow_pos del_reason_btn del_taken_in"
  onClick="UpdateRecord(<? echo $row['reasonID']; ?>);"/>
  </td>
</tr>
<?

?>
</table>
</form>

计划是,如果数据库中的值为 1,则选中复选框并启用表中的输入,而如果值为 0,则禁用它们,复选框将保持未选中状态。

我正在使用 array 传回来自 Ajax 的值,因为我打算在完成这项工作后添加更多内容

【问题讨论】:

单个=是赋值,==是比较... 【参考方案1】:

在if条件中,你需要使用==而不是==是赋值运算符,你需要等于运算符是==

if (taken_by_on == 0) 
    $('.taken_by_input').attr('disabled', true).css('color', '#F0F0F0');
    $('#taken_by_enable').prop('checked', false);
 else if (taken_by_on == 1) 
    $('.taken_by_input').attr('disabled', false).css('color', '#000');
    $('#taken_by_enable').prop('checked', true);

【讨论】:

以上是关于ajax查询后设置复选框状态的主要内容,如果未能解决你的问题,请参考以下文章

如果 AJAX 错误,请取消选中复选框 [重复]

通过AJAX缓存后使用JSON

选择单选按钮后将复选框设置为选中状态

Laravel 复选框过滤器 ajax

复选框状态更改时如何更新mysql字段?使用 jquery (ajax)、php 和 mysql

更改页面后复选框列表保持初始状态