为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕丝7291255 2021-11-18 20:14:23
我在单击按钮时通过 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但它不会更新数据库中的数据。请指导我哪里错了或者有什么遗漏。任何建议将不胜感激。
查看完整描述

3 回答

?
开心每一天1111

TA贡献1836条经验 获得超13个赞

代码看起来不错。可能存在您没有看到的错误。


将此添加到顶部:


ini_set('error_reporting', E_ALL);

ini_set('display_errors', true);


查看完整回答
反对 回复 2021-11-18
?
当年话下

TA贡献1890条经验 获得超9个赞

有一些问题:

  1. 您需要确保按钮不会重新加载页面(type='button'另一篇文章所述)。

  2. 我们应该始终对 HTML 属性使用双引号以防止此类错误(使用onclick=\"UpdateStatus('param-here')\"代替onclick='...'

  3. 如果您使用 PHP 的双引号功能,则不需要手动连接(如果 PHP$在双引号中查找,就像echo "Variable is: $x"它尝试$x自动查找和连接变量一样)。

如果您应用上述更改,您的代码应如下所示:

echo "<form >";

if ($status == 'regular') {

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

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

  echo "<td><button type='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 type='button' class='btn btn-success' onclick=\"UpdateStatus('$id','regular')\">UPDATE TO REGULAR</button><br><br>";

}

echo "</form>";


查看完整回答
反对 回复 2021-11-18
?
明月笑刀无情

TA贡献1828条经验 获得超4个赞

看起来你的语法是错误的。尝试 $sql = "UPDATE user SET status = ".$status." WHERE UserID = ".$id";


查看完整回答
反对 回复 2021-11-18
  • 3 回答
  • 0 关注
  • 190 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信