我有一个php文件,在该文件中我添加了js。我想现在在该JS范围内使用PHP函数,我该怎么做:
<?php
echo '<script>
<?php
function message() {
echo "You will be redirected";
}
?>
setTimeout(<?php message();>?,3000);</script>';
?>
PHP将首先在服务器上执行,因此您必须在.php文件中代码,以确保服务器通过PHP运行,然后将其嵌入PHPJavaScript喜欢:
<script>
function message(){
alert("<?= $phpMessage ?>");
location.href = "http://www.example.com" /* The URL you would like the user to go to next */;
}
setTimeout(message,3000);
</script>
假设您要显示PHP的消息,则可以将其嵌入到&lt;?= $ phpMessage?>的警报语句中。这对您的用户来说会很尴尬。
更优雅的解决方案是使用会话存储将消息传递到下一页。
在接收数据的页面上,需要发送消息,即第一个PHP命令,然后发送任何输出应为 session_start()。可以将消息保存在会话变量中,并使用 $ _会话['Message'] ,它将用于下一个脚本,例如:
ONE.PHP (第一页)
<?php session_start(); $_SESSION['message'] = 'My Message';
二.php(第二页)
<?php session_start(); echo $_SESSION['message']; unset($_SESSION['message']); ?>
请注意,第二个脚本必须使用 unset 清除消息。
无论您做什么,JavaScript都无法在页面上下文中执行PHP。根据您的示例,我认为您不想在PHP中这样做。
如果您只想在重定向用户之前输出消息,则仅JavaScript是工作的正确工具:
<script>
function message() {
document.write("You will be redirected");
}
setTimeout(message,3000);
</script>
我正在尝试考虑一种场景,在这种情况下,将PHP和JavaScript混合在一起是有意义的,但是我不能。
但是,如果您真的坚持...
<?php
function message() {
return "You will be redirected";
}
echo '
<script>
setTimeout(() => document.write("' . message() . '"), 3000);
</script>
';
?>
在https://repl.it/gf2e/0
上测试请注意,所有当前浏览器都支持JavaScript箭头函数语法。