【问题标题】:Javascript isn't parsing PHP [duplicate]Javascript 不解析 PHP [重复]
【发布时间】:2013-01-31 17:23:01
【问题描述】:

可能重复:
Parse a JavaScript file through PHP
PHP no longer working inside javascript

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

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

我知道这是编写 Hello 的一种愚蠢方式,但它演示了当我尝试在 javascript 中使用 php 时遇到的错误。它昨天工作得很好,没有任何代码改变。当我运行它时,它在第 3 行显示“unexpected token

【问题讨论】:

  • 可能您的网络服务器不支持 PHP 短标签。您是否尝试过改用&lt;?php
  • 这不是 javascript 解析 PHP 的工作。它应该被解释(和删除)服务器端。
  • @PraveenKumar 在我看来,您应该让您的答案之一更长。你可能是对的,OP 应该看看这个。
  • @PraveenKumar 有人对你投了反对票,不管有没有理由(我可以说他是白痴还是他在你的问题中发现了问题)。这没什么大不了的。你应该等着看你是否能解决问题。如果您非常在意这些观点,您可以随时在明天回来删除答案。
  • 我改变了我的短标签,它奏效了!现在我试图在我的 Mac 上找到 /private/etc/php.ini 并启用短标签。我很困惑为什么短标签昨天有效但今天无效,但是哦,它有效!谢谢。

标签: php javascript


【解决方案1】:

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

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

在我看来,我不知道为什么要打开一个&lt;script&gt; 标记并在那里声明一个 PHP 服务器端语句。你知道吗?它不输出任何东西。无论如何,上面代码的输出是这样的:

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

  </script>
  Hello
</html>

所以不需要&lt;script&gt; 标签,因为它是客户端,PHP 并不关心这一点。你可以随便给它,只要它们在&lt;?php ?&gt;标签内,浏览器就不会解析它们。 :)


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

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

    short_open_tag = Off
    
  3. 改成:

    short_open_tag = On
    

来自手册:

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

【讨论】:

  • 好吧,投反对票的理由太棒了!
  • 您正在使用脚本标签来声明一个 php 变量。然后在外面你呼应它。不需要脚本标签
  • @VeXii 我知道这很愚蠢。让我补充一下答案。但那是OP的代码。你没看到吗?
  • 好吧,我们是想教一些东西还是只是为了让东西被打印出来?
  • @VeXii 你现在能看到我更新的答案吗?我已经编辑并给出了解释。
【解决方案2】:

它的 javascript 无效。

运行 php 后,你最终会得到一个看起来像 &lt;script type="text/javascript"&gt;&lt;/script&gt; 的 dom,因为你没有写任何东西。

尝试:

<script>
var hello = "<?php echo 'hello' ?>"
</script>
<script type="text/javascript">
document.writeln(hello)
</script>

【讨论】:

  • 您忘记在“你好”之后添加;。这是一个解析错误
  • 你不需要在javascript中使用分号来声明一个变量。
  • 不是当你关闭同一行的 php 标签时 afaik
【解决方案3】:

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

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

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

【讨论】:

  • 不知道为什么这被否决了..我们不应该考虑所有可能的问题来源吗?
  • 老兄,我没有投反对票。但是,尽管您的回答无济于事,但请了解正在发生的事情!实际上,坦率地说,您的回答进一步搞砸了代码。您启用了 short_open_tag 而 OP 没有。阅读更多关于它的信息,你就会知道为什么你被否决了。
  • @PraveenKumar 不用担心,我并不是真的在抱怨 ;-) 我只是虽然 if OP 实际上启用了short_open_tag,但这可能是一个解决方案.
  • 不太可能,这就是解决方案。 :)
  • 这只是基于我刚开始使用 PHP 时遇到的常见错误的假设。我同意我不应该提到上述是“唯一的方法”;)
猜你喜欢
  • 1970-01-01
  • 2012-04-10
  • 2017-01-09
  • 1970-01-01
  • 2017-12-15
  • 1970-01-01
  • 2013-08-23
  • 2013-04-06
  • 1970-01-01
相关资源
最近更新 更多