【发布时间】:2021-12-11 06:58:15
【问题描述】:
<?php
echo "<script type='text/javascript'>error_warning('Error!'); </script>";
?>
<!DOCTYPE html>
<html stuff>
<div id="alert_box" class="alert"></div>
</html stuff>
<script type="text/javascript">
function error_warning(warning){
var div = document.getElementById('alert_box')
div.style.display='block';
div.textContent=warning;
setTimeout(function(){ div.style.display = "none"; }, 5000);
}
</script>
此代码已大大简化,但显示了关键值。我正在尝试在 php.ini 代码的底部运行 Javascript 函数。在完整的代码中,当发生某些事情时,php 会回显该脚本。我试过类似的代码:
echo "<script> alert('Error!') </script>";
这可行,但我宁愿创建自己的警报消息,该消息出现在页面的右上角。 div 设置为display: none,但我试图运行调用设置display: block 的函数。所有的 css 都被处理了,我已经测试过它可以使用一个按钮。
我在 XAMPP apache mysql 上运行我的代码。这是加载页面时的错误类型:
Uncaught ReferenceError: error_warning is not defined
at account.php:1
我收集到的是,当 php 正在服务器端运行时,该函数未定义,因此它看不到它,因此返回错误。我尝试了几种解决方案,例如将脚本放在 php 之前,但它们没有奏效。
谁能帮忙?
谢谢
【问题讨论】:
-
将 PHP 移到 JS 函数之后。 PHP 将解析整个页面并将其传递给浏览器,然后在浏览器中评估 JS。您在上面遇到的问题是传递给浏览器的页面试图执行尚未创建的功能。
-
通常,如果您尝试以这种方式将客户端逻辑与服务器端逻辑配对,则意味着您存在架构缺陷并且以错误的方式思考逻辑。也许如果您将原理解释为您希望此“错误警告”具体发生的原因和时间,我们可以将您推向正确的方向。我会敦促您研究 AJAX,在这种情况下,您甚至可以自己想出一个解决方案。另外请注意,尽量不要简化您的问题,而是“按原样”呈现它,除非您对所呈现的内容非常有信心。
-
非常感谢@j08691。
-
@Martin 当我有一个更大的网站时,我会研究 AJAX。不过谢谢:)
-
@sebtheoo 您可以将错误消息的值存储到一个变量中,并在初始化 js 文件后在页面底部检查该变量,然后打印脚本标签。您的脚本标签也应该在
标签: javascript php html css