javascript - 带有确定和取消按钮的 php 警报框
问题描述
我有一个php 代码(还有一点点 javascript),如下所示,当第二个用户尝试在一个用户已经登录的情况下登录表单时,会显示一条警报消息。
我现在遇到的问题是在警报框中单击“确定”,它进入if 块内,但单击取消时它不会进入else 块内,而是再次进入if 块内。
<?php
$message = "user " . $row['user_name'] . " is logged in. Do you want to take over ?";
echo "<script type='text/javascript'>confirm('$message');</script>";
if(confirm)
{
$stmt1=$connect->prepare("UPDATE trace_users SET write_access='0' WHERE write_access='1'"); // revoke write access of all users
$stmt1->execute();
}
else
{
echo "I am in else block"; // Line A
$stmt1=$connect->prepare("UPDATE trace_users SET write_access='1' WHERE write_access='0'"); // revoke write access of all users
$stmt1->execute();
}
?>
我添加了Line A/Line B用于调试目的。在单击按钮Ok按钮时调用 Line A 并在单击Cancel按钮时再次调用 Line A。
解决方案
这是一个让您入门的快速示例:
index.php
<?php
//....
$user = "John Doe"; // $row['user_name'];
$message = "User $user is logged in. Do you want to take over?";
if (isset($_GET['takeover'])) {
if ($_GET['takeover'] == "confirm") {
// $stmt1 = $connect->pre......etc
exit(json_encode(["message" => "Access confirmed"])); // Send response to JS
} else {
// $stmt1 = $connect->pre......etc
exit(json_encode(["message" => "Access revoked"])); // Send response to JS
}
}
?>
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>TEST</title>
</head>
<body>
<h1>MY USER INTERFACE</h1>
<script>
const takeover = confirm("<?= $message ?>");
fetch(`?takeover=${takeover ? "confirm" : "revoke"}`)
.then(response => response.json())
.then(data => {
console.log(data);
});
</script>
</body>
</html>
- 服务器将在提供页面之前“剥离” PHP 标签,但回显的值将保留。即:
$message
在 JavaScript 代码中。 - 在 Document 上准备好
confirm()
触发器,并在 JS 中携带一个布尔值。 - 根据该值,只需使用 GET 请求获取相同的文件(或任何其他文件)
somepagename.php?takeover=confirm
- 在 PHP 中侦听
$_GET
请求并使用 JSON 响应响应 AJAX 请求。 - 打开控制台,看到服务器响应了足够的消息对象数据。
快乐编码。
推荐阅读
- c# - 如何使用反射从实例中获取私有字典
- wordpress - 缺少 JPG 文件会减慢页面加载速度
- kotlin - 如何从 WebFlux 处理程序返回 HTML 页面
- linux - ImageMagick convert -crop 返回相同的图像
- google-sheets - Google 表格到 Google Data Studio - 年份比较组合图
- servicestack - 使用 ServiceStack 中的自定义身份验证提供程序的 ArgumentNullException
- css - css如何在响应时在元素上有边距
- javascript - JavaScript 中的用户输入和解析
- ansible - 如何将 aruba_command 与期望指令一起使用?
- c# - c#和进程控制