猿问

Ajax 请求无法使用 PHP 和 MySQL 单击按钮

我在单击按钮时通过 JavaScript 发送 ajax 请求。当按钮被点击时,会从执行 ajax 请求的地方调用一个函数。


这是调用函数的html代码:


echo "

<form > ";

if ($status == 'regular') {

    echo "<input type='hidden' value='".$id."' name='id'>";

     echo "<input type='hidden' value='official' name='status'>";

    echo "<td><button class='btn btn-info' onclick='UpdateStatus(".$id.",'official')'>UPDATE TO OFFICIAL</button><br><br>";

}

if ($status == 'official') {

     echo "<input type='hidden' value='".$id."' name='id'>";

     echo "<input type='hidden' value='regular' name='status'>";

echo "<td><button class='btn btn-success' onclick='UpdateStatus(".$id.",'regular')'>UPDATE TO REGULAR</button><br><br>";

    }

echo "</form>";

UpdateStatus()是有ajax请求的函数。我从这里发送$id用户 ID 和要更新的状态。


这是 UpdateStatus() 函数:


<script>

function UpdateStatus(str,str1) {

if (str.length == 0) {

    document.getElementById("txtHint").innerHTML = "";

    return;

} else {

    var xmlhttp = new XMLHttpRequest();

    xmlhttp.onreadystatechange = function() {

      //ready

    };

    xmlhttp.open("GET", "update_status.php?id=" + str + "&status=" + str1, true);

    xmlhttp.send();

}

}

</script>

的str和str1分别是编号和状态。这是update_status.php:


<?php

$id = $_REQUEST["id"];

$status = $_REQUEST["status"];

$server_name = "localhost";

$user_name = "root";

$password = "";

$db = "diwan";

$conect = new mysqli($server_name, $user_name, $password, $db);

if($conect->connect_error)

{ die("Connection failed ".$conect->connect_error); }

$sql = "UPDATE user SET status = '$status' WHERE UserID = $id";

if(!$conect->query($sql))

      {echo "error in adding record ".$conect->error;}

$result = $conect->query($sql);

?>

当我点击按钮时,我得到了这种格式的网址:


http://localhost/diwan_web/manageusers.php?id=2&status=official


但它不会更新数据库中的数据。请指导我哪里错了或者有什么遗漏。任何建议将不胜感激。


慕丝7291255
浏览 191回答 3
3回答

开心每一天1111

代码看起来不错。可能存在您没有看到的错误。将此添加到顶部:ini_set('error_reporting', E_ALL);ini_set('display_errors', true);

当年话下

有一些问题:您需要确保按钮不会重新加载页面(type='button'如另一篇文章所述)。我们应该始终对 HTML 属性使用双引号以防止此类错误(使用onclick=\"UpdateStatus('param-here')\"代替onclick='...')如果您使用 PHP 的双引号功能,则不需要手动连接(如果 PHP$在双引号中查找,就像echo "Variable is: $x"它尝试$x自动查找和连接变量一样)。如果您应用上述更改,您的代码应如下所示:echo "<form >";if ($status == 'regular') {&nbsp; echo "<input type='hidden' value='$id' name='id'>";&nbsp; echo "<input type='hidden' value='official' name='status'>";&nbsp; echo "<td><button type='button' class='btn btn-info' onclick=\"UpdateStatus('$id','official')\">UPDATE TO OFFICIAL</button><br><br>";}if ($status == 'official') {&nbsp; echo "<input type='hidden' value='$id' name='id'>";&nbsp; echo "<input type='hidden' value='regular' name='status'>";&nbsp; echo "<td><button type='button' class='btn btn-success' onclick=\"UpdateStatus('$id','regular')\">UPDATE TO REGULAR</button><br><br>";}echo "</form>";

明月笑刀无情

看起来你的语法是错误的。尝试&nbsp;$sql = "UPDATE user SET status = ".$status." WHERE UserID = ".$id";
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答