我有一个php文件,其中我在echo里面添加了JS。 我现在想在JS范围内使用php函数,我该怎么做:
<?php
echo '<script>
<?php
function message() {
echo "You will be redirected";
}
?>
setTimeout(<?php message();>?,3000);</script>';
?>
答案 0 :(得分:0)
PHP将首先在服务器上执行,因此您必须在.php文件中对其进行编码,以确保服务器通过PHP运行它,然后将PHP嵌入到JavaScript中,如下所示:
<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?&gt;。这对您的用户来说很尴尬。
更优雅的解决方案是使用会话存储将消息传递到下一页。
在接收数据并需要发送消息的页面上,在发送任何输出之前,第一个PHP命令应为 session_start()。消息可以使用 $ _ SESSION ['message'] 保存在会话变量中,并且可以用于下一个脚本,如下所示:
one.php (第一页)
<?php session_start(); $_SESSION['message'] = 'My Message';
two.php (第二页)
<?php session_start(); echo $_SESSION['message']; unset($_SESSION['message']); ?>
请注意,第二个脚本必须使用取消设置来清除消息。
答案 1 :(得分:0)
无论您做什么,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>
';
?>
进行测试
请注意,JavaScript箭头函数语法为supported by all current browsers。