繁体   English   中英

Ajax 请求在使用 PHP 和 MySQL 的按钮单击时不起作用

[英]Ajax request not working on button click using PHP and MySQL

单击按钮时,我通过 JavaScript 发送 ajax 请求。 当按钮被点击时,从执行 ajax 请求的地方调用 function。

这是 html 代码,其中 function 被称为:

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()是 function ,其中有 ajax 请求。 从这里我发送$id这是用户 ID 和要更新的状态。

这是 UpdateStatus() function:

<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>

strstr1分别是 Id 和 status。 这是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);
?>

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

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

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

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

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

将此添加到顶部:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', true);

有一些问题:

  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>";

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM