Javascript 没有解析 PHP


Javascript isn't parsing PHP

可能的重复项:
通过 PHP
解析 JavaScript 文件 PHP不再在javascript中工作

我正在本地主机上运行.php文件,昨天它们工作了,今天它们有错误,但我没有更改代码。这是一个测试文件,它与我较长的实际代码具有相同的错误:

<html>
  <script type="text/javascript">
    <? $message = "Hello"; ?>
  </script>
  <? echo $message; ?>
</html>

我知道这是一种愚蠢的编写 Hello 的方式,但它演示了当我尝试在 javascript 中使用 php 时我遇到的错误。昨天它运行良好,没有任何代码更改。当我运行它时,它在第 3 行显示"意外令牌<"。我认为这是apache/php/mysql的问题,但是我在尝试修复它时迷失了方向。任何建议都会很棒。谢谢。

我猜,你禁用了短标签。您需要启用 PHP 短标记才能使其正常工作。检查这是否有效:

<html>
  <script type="text/javascript">
    <?php $message = "Hello"; ?>
  </script>
  <?php echo $message; ?>
</html>

在我看来,我不知道为什么你打开一个<script>标签并在那里声明一个 PHP 服务器端语句。你知道吗?它不输出任何内容。无论如何,上述代码的输出将是这样的:

<html>
  <script type="text/javascript">
  </script>
  Hello
</html>

所以没有必要有<script>标签,因为它是客户端,PHP 并不关心这一点。你可以把它放在任何你想要的地方,只要它们在<?php ?>标签内,它们就不会被浏览器解析。:)


如果您在自己的系统中执行此操作,要在 PHP 中启用短标记,请执行以下操作:

  1. 找到php.ini文件。
  2. 找到这个:

    short_open_tag = Off
    
  3. 将其更改为:

    short_open_tag = On
    

从手册:

short_open_tag:告诉 PHP 是否应该允许 PHP 的开放标签的短格式(<? ?>)。如果要将 PHP 与 XML 结合使用,可以禁用此选项以内联使用<?xml ?>。否则,您可以使用PHP打印它,例如:<?php echo '<?xml version="1.0"?>'; ?>。此外,如果禁用,则必须使用 PHP 开放标记(<?php ?>)的长格式。

它不是有效的javascript。

在 PHP 运行后,你最终会得到一个看起来像<script type="text/javascript"></script>的 dom,因为你没有编写任何东西。

尝试:

<script>
var hello = "<?php echo 'hello' ?>"
</script>
<script type="text/javascript">
document.writeln(hello)
</script>
脚本对我来说

很好用。您的问题中发布的代码是否完整?我能够重现该问题的唯一方法是使用以下代码:

<?php
<html>
  <script type="text/javascript">
    <? $message = "Hello"; ?>
  </script>
  <? echo $message; ?>
</html>
?>

如果我错了,请纠正我,但我假设您发布的代码位于 *.php 文件中,位于 php 标签之间。如果是这种情况,请删除所述标签,它应该可以工作。