选中复选框时,Ajax更新数据库

时间:2016-09-05 15:05:21

标签: php mysql ajax

您好我正在尝试通过单击复选框来更新数据库表,但它无法正常工作。

HTML:

<input name="no_cage" id="no_cage" type="checkbox" value="1" onclick="chkit(<?php echo $estimate_id; ?>,'no_cage');" <?php echo $checked; ?>

AJAX:

function chkit(estimate_id, no_cage) {
    chk=document.getElementById("no_cage").checked;

    $.ajax({
            type: 'GET',
            url: 'ajax.php',
            data: { chkYesNo: no_cage, estimate_id: estimate_id}

        });
}

ajax.php

<?php

error_reporting(E_ALL);

include($_SERVER["DOCUMENT_ROOT"]."/dbconnect.php");

$get=$_GET['chkYesNo'];

$get_id=$_GET['estimate_id'];
if($get=="1")
{
    $sql = "UPDATE estimates SET
            no_cage = '1',
            cage_linear_feet = '',
            cage_doors = '',
            cage_options = '',
            cage_labor = ''
            WHERE estimate_id = '".$get_id."'";

    if ($conn->query($sql) === TRUE) {
        echo "";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
    }
}
else
{

}
?>

任何人都能看到我失踪的是什么吗?我不是专家,并且一直玩弄了很长一段时间没有运气。

谢谢,

约翰

2 个答案:

答案 0 :(得分:2)

当您将'no_cage'作为

的参数2传递时
onclick="chkit(<?php echo $estimate_id; ?>,'no_cage');"

然后通过AJAX将其传递给PHP

data: { chkYesNo: no_cage, estimate_id: estimate_id}
        ^^^^^^^^

当您到达PHP代码$get时,= no_cage将永远不会像您的PHP代码所期望的那样1

$get=$_GET['chkYesNo'];   // which will = `no_cage'`

if($get=="1")

简而言之,您实际上从未运行过查询

在查找复选框是否已选中时,请尝试此操作,因为您的代码将返回truefalse,这可能会导致问题

function chkit(estimate_id, no_cage) {
    chk = document.getElementById("no_cage").checked ? 1 : 0;

    $.ajax({
            type: 'GET',
            url: 'ajax.php',
            data: { chkYesNo: chk, estimate_id: estimate_id}

        });
}

答案 1 :(得分:0)

更正变量 chkYesNo 的值, 你必须把var chk 放在例如

if(chk){
  chk=1
}else{
  chk=0
 }

数据:

  

{chkYesNo:chk,estimate_id:estimate_id}