如何在PHP文件中使用JS内的PHP



我有一个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箭头函数语法。

最新更新