【发布时间】:2020-05-11 21:38:37
【问题描述】:
我正在尝试使用 HTML、JS 和 PHP 创建一个函数,它执行以下操作:
- 当一个 HTML“按钮”被按下时,它给一个
$_GET数组赋值; - 当
$_GET数组中存在这些值时,它会弹出一个 JavaScript 确认窗口; - 如果用户按下“确定”,JS 将向
$_COOKIE数组提供true的值。如果用户按下“CANCEL”,JS 会将$_COOKIE数组的值传递给false; - 最后使用 PHP 检查
$_COOKIE数组,如果是true,它会做一些事情。否则它什么都不做。
每一步的代码在哪里:
// STEP 1
<a href="page.php?remove=true&id-organ=1">Remove</a>
// STEP 2 AND 3
if (isset($_GET['remove']) && isset($_GET['id-organ'])) {
echo '
<script>
var option = confirm("REMOVE?");
if (option == true) {
document.cookie = "option = true";
} else {
document.cookie = "option = false";
}
</script>
';
}
// STEP 4
if ($_COOKIE['option'] == true) {
echo '
<script>
window.alert("ORGAN WAS REMOVED!\n");
</script>
';
}
如果按下 JS 确认窗口“确定”,一切正常,很棒,没有问题。
如果按下 JS 确认窗口“CANCEL”,STEP 4 if 语句仍然发生。
- 我已尝试
console.log(option),这对于 CANCEL 是错误的 按钮。 - 我试过
echo $_COOKIE['option']也是假的 取消按钮。
从字面上反对所有“编程物理学”是没有意义的。 . .
谁能告诉我为什么会这样?难道我做错了什么?这种类型的功能有更好的方法吗?
【问题讨论】:
-
PHP 在服务器上运行,JavaScript 在客户端上运行,它们不会同时运行。那么第 2 步和第 3 步的运行情况如何?
-
好的,当你知道你在做什么需要将表单提交回服务器时,你就会明白了。 PHP 将执行代码,然后加载页面。它不会坐在那里等待 JavaScript 执行。 (而且我没有投反对票)
-
我会回到绘图板上,了解
AJAX并分离您的 PHP、HTML 和 Javascript。由于 PHP 是在 Javascript 发送到浏览器运行之前处理的,因此您将获得意想不到的结果。因此,学习如何将它们分开将使您能够学习最佳实践,并限制将它们组合在一起时会弹出的奇怪错误。 -
@Grinnex。我不懂 PHP,但不确定 cookie 字符串如何匹配布尔值 true。
-
你在JS中设置的cookie值是always一个字符串。但是您在 PHP 中的比较是错误的 - 因为在那里,您 not 与字符串进行比较。 text 值
'true'和'false'在 PHP 中是 both 真实值 -'true' == true和'false' == true都产生true。您在这里需要的是if ($_COOKIE['option'] == 'true')(甚至是===,以确保没有任何歧义。)
标签: javascript php html setcookie confirm