2016-07-22 50 views
2

我试图在每次选中或取消选中该复选框时更改我的db标志的值。但由于某种原因,它只是当我改变我的复选框从checked - >unchecked才开火。未选中复选框时AJAX无法正常工作

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(); 

?> 

回答

2

您必须更改下面的代码。

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(); 
?> 
+0

表彰为您提供:d谢谢:)只是一个 最后一个问题。 'this'具体做什么?

+0

** this **是当前元素的对象。 –

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); 
     } 
    }); 
} 

,我认为它会做你需要做的

1
什么

您可以查看统计我们复选框无论是使用下面的代码选中或取消选中:

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

编码快乐 :)