无法调用函数 /AJAX 相关


unable to call functions /AJAX RELATED

单击复选框时,我正在尝试同步更新数据库。我决定使用 ajax,但它似乎无法识别 ajax。

代码:将成为Switch_Active(this.id)函数的元素

...
<div class='switch'>
<label>
Deactivate
<br>                                                        
<input  name='switch_Activate1'onclick='Switch_Activate(this.id)' type='checkbox'>
<span class='lever'></span>
<br>                                                      
Activate
</label>
</div>
...

剧本

    <script type="text/javascript">
function Switch_Activate(id) {
      if (!document.getElementById(id).checked) {
        var projectID = id;
        var Activation_Status = 1;
        var dataString = "projectID=" + projectID + "&Activation_Status=" + Activation_Status ;
        $.ajax({
            type: "POST",
            url: "ajax/switchchange.php",
            data: dataString,
            cache: false,
            dataType: "json",
            success: function (data) {
            alert("asd1");
            }
        });
      }
      else{
        var projectID = id;
        var Activation_Status = 1;
        var dataString = "projectID=" + projectID + "&Activation_Status=" + Activation_Status ;
        $.ajax({
            type: "POST",
            url: "ajax/switchchange.php",
            data: dataString,
            cache: false,
            dataType: "json",
            success: function (data) {
          alert("asd2");
            }
        });
      }
    }//
</script>

开关更改.php

<?php
 include("../../connection/connection.php");
    echo"<script type='text/javascript'>alert('php in');</script>";
    $projectID = $_POST['projectID'];
    $Account_Status = $_POST['Activation_Status'];
    $sql = "update tblProject set projectStatus = '$Account_Status' where projectID = '$Account_Status'";
    $stmnt = sqlsrv_query($db, $sql);
    ?>

连接

    <?php
    //Database Connection
try{
    $db = new PDO("sqlsrv:Server=AJ-PC'SQLEXPRESS;Database=RealEstate_DB", "", "");
    $db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(PDOExceptio $e){
    echo $e->getMessage();
    die();
}
我会

以这种方式重写您的代码,确保您遵循以下步骤:

  1. 确保包含 jQuery
  2. 为什么要使用this.id,如果你可以简单地使用this,它会给你关于该元素对象的所有你需要的
  3. 您在 if/else 条件下使用相同的代码,您需要做的就是使用必要的选项构建您的dataString,然后将数据传递给 AJAX 一次。
  4. 不需要return false,因为单击复选框不会触发其他任何内容。

这是我的代码:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
<input id="someID" name='switch_Activate1' onclick='Switch_Activate(this)' type='checkbox'>
<script>
    function Switch_Activate(checkbox) {
        var dataString = {
            'project_ID': checkbox.id,
            'Activation_Status': checkbox.checked
        };
        $.ajax({
            type: "POST",
            url: "ajax/switchchange.php",
            data: dataString,
            cache: false,
            dataType: "json",
            done: function (data) {
                alert(data.message);
                if (data.response) {
                    // your success code
                } else {
                    // your error code
                }
            }
        });
    }
</script>

更新:

我刚刚意识到您的 AJAX 调用设置为接受 JSON dataType: "json"但您的 PHP 没有输出 JSON。您需要将所有输出转换为 JSON,因此在您的情况下,您可以执行以下操作:

<?php
// ... your Database UPDATE code...
$result = array(
    "response" => TRUE,
    "message" => "some message"
);
header("Content-type: application/json");
echo json_encode($result);