【问题标题】:AJAX not working when checkbox is unchecked未选中复选框时 AJAX 不起作用
【发布时间】:2016-11-25 20:08:30
【问题描述】:

每次我选中或取消选中复选框时,我都会尝试更改 db 上的标志值。但由于某种原因,只有当我将我的复选框从checked 更改为unchecked 时,它才会触发。

HTML

    <table id="example" class="display" cellspacing="0" width="100%">
        <thead>
            <tr>
                <th>Lot ID                  </th>
                <th>Lot Name                </th>
                <th>Block Located         </th>
                <th>Status      </th>
                <th>Action      </th>
            </tr>
        </thead>
        <tbody>
    <?php
    $sql = $db->prepare("SELECT * from tbl_lot
                        LEFT JOIN tbl_block ON tbl_lot.blockID = tbl_block.blockID
                        WHERE lotStatus <> 2");

    $sql->execute();
        while($result = $sql->fetch(PDO::FETCH_ASSOC))
        {
          $id         = $result['lotID'];
          $lotName    = $result['lotName'];
          $status     = ($result['lotStatus']==1) ? "checked" : "";
          $blockName  = $result['blockName'];
          $blockID    = $result['blockID'];

          echo "
          <tr>
            <td>$id</td>
            <td>$lotName</td>
            <td>$blockName</td>
            <td>
            <input type='checkbox'  onchange='switchStatus($id,$status)'  data-toggle='toggle' $status>
            </td>
            <td>
            <div class='btn-group'  role='group'>
              <input type='button'  value='Manage'  onclick='Xmanage($id,$blockID,\"$lotName\")'  class='btn btn-info'>
              <input type='button'  value='Remove'  onclick='Xdelete($id)'                            class='btn btn-danger'>
            </div>
            </td>
          </tr>
          ";
        }
        ?>
        <tbody>
</table>

这是我的 AJAX 代码:

    function switchStatus(id,status){
  var theID = id;
  var theStatus = status;
  if(theStatus==1){
  $.ajax({
      url:    "ajax/updateProjectStatus.php",
      type:   "POST",
      data:   {
        projectID : theID,
        status    : theStatus
      },
      cache:  false,
      success: function (data){
        alert(data);
      }
  });
  }
}

updateProjectStatus.php

 <?php
include "../../connection/connection.php";
$id                  =  $_POST['projectID'];
$prevStats       =  $_POST['status'];
if($prevStats==1){$status = 1;}else{$status=0;}
$sql                 =  "UPDATE tbl_project  set projectStatus = '$status' WHERE projectID = '$id'";
$query             =    $db->prepare($sql);
$results           =    $query->execute();

?>

【问题讨论】:

    标签: javascript php jquery ajax checkbox


    【解决方案1】:

    您需要更改以下几行

     $status     = ($result['lotStatus']==1) ? "checked" : "";
    

    $status     = $result['lotStatus'];
    $checked_or_not="";
    if($status==1){ $checked_or_not= "checked"; }
    

    然后把复选框改成这样

     <input type='checkbox' id="check"  onchange='switchStatus($id)'  data-toggle='toggle'  value="$status"  $checked_or_not>
    

    把你的脚本改成这样

    function switchStatus(id) {
        var theID = id;
        var theStatus = 0;
        if (document.getElementById("check").checked == true) {
            theStatus = 1;
        }
        $.ajax({
            url: "ajax/updateProjectStatus.php",
            type: "POST",
            data: {
                projectID: theID,
                status: theStatus
            },
            cache: false,
            success: function (data) {
                alert(data);
            }
        });
    }
    

    我认为它会做你需要做的事情

    【讨论】:

      【解决方案2】:

      您可以使用以下代码检查复选框的状态是选中还是未选中:

      if($('#'+your_id).is(':checked') || $('#'+your_id).prop('checked')) 
        {
          // do something if checked
        }
        else
        {
          // do something if unchecked
        }
      

      快乐编码 :)

      【讨论】:

        【解决方案3】:

        您必须更改以下代码。

        HTML

        <input type='checkbox' onchange='switchStatus($id, this)' data-toggle='toggle' $status>
        

        AJAX 代码

        function switchStatus(id,status){
            var theID = id;
            var theStatus = $(status).prop('checked');
            if(theStatus){
               theStatus = 1;
            } else {
               theStatus = 0;
            }
            $.ajax({
               url  : "ajax/updateProjectStatus.php",
               type : "POST",
               data : {
                   projectID : theID,
                   status    : theStatus
               },
               cache   :  false,
               success : function (data){
                  alert(data);
               }
            });
        }
        

        updateProjectStatus.php

        <?php
        include "../../connection/connection.php";
        $id = $_POST['projectID'];
        $status = $_POST['status'];
        $sql = "UPDATE tbl_project  set projectStatus = '$status' WHERE projectID = '$id'";
        $query = $db->prepare($sql);
        $results = $query->execute();
        ?>
        

        【讨论】:

        • 对你的表扬 :D 谢谢 :) 最后一个问题。 this 具体是做什么的?
        • this 是当前元素的对象。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-09-09
        • 1970-01-01
        • 2014-09-19
        • 2014-07-15
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多