【问题标题】:PHP: Code gets turned into HTML <!-- Comments? -->PHP:代码变成了 HTML <!-- 评论? -->
【发布时间】:2012-02-20 21:42:13
【问题描述】:

当我输入这样的代码时:

<p>Hello <? echo $name; ?>, How are you?</p>

打印出来:

<p>Hello <!--? echo $name; ?-->, How are you?</p>

作为评论。我将它放在一个名为 base.js 的文件中,代码如下:

function showName() {
   document.getElementById("name").innerHTML = "<p>Hello <? echo $name; ?>, How are you?</p>";
}

所以我像这样嵌入 .js 文件:

<script type="text/javascript" src="base.js"></script>

所以,在它更改 &lt;p id="name"&gt;&lt;/p&gt; 之后,我得到:

<p id="name">Hello <!--? echo $name; ?-->, How are you?</p>

我在 .php 文件中有代码,它似乎工作正常。现在我将它放在一个单独的 base.js 文件中,它不再起作用。救命!

【问题讨论】:

  • 那是因为它不再是php了。
  • 您不能从 Javascript 评估 PHP 代码!好的,如果您告诉服务器将 .js 文件作为 PHP 进行预处理,您就可以摆脱它;尝试调用文件 .js.php
  • PHP 必须在输出 javascript 之前进行解析。您可能需要
  • 显然 *.js 文件不会被服务器上的 php 解析。如果您愿意,您实际上可以解析 .js 文件:encodable.com/parse_html_files_as_php 但我不推荐...
  • 没错。 apache 决定是否根据文件扩展名来解释文件中的 PHP 代码,通常是*.php。您可以重命名文件base.js.php 并以通常的方式包含它。您的浏览器不会介意。 &lt;script type="text/javascript" src="base.js.php"&gt;&lt;/script&gt;

标签: php javascript html


【解决方案1】:

那是因为它不再是php了。

改成

<script type="text/javascript" src="base.php"></script>

and have a 
<?php header("content-type:text/javascript"); 
$name = "...";
?>

function showName() {
   document.getElementById("name").innerHTML = "<p>Hello <?php echo $name; ?>, How are you?</p>";
}

或者

改成

function showName(name) {
   document.getElementById("name").innerHTML = "<p>Hello "+name+", How are you?</p>";
}

并且在php文件中有

<script>
// using json_encode to make the string safe for script injection. 
// Still needs quotes for a single string
showName("<?php echo json_encode($name); ?>");
</script>

【讨论】:

  • 出于安全原因,最后一个应该是showName(&lt;?php echo json_encode($name); ?&gt;);
  • 不加评论就投反对票是 SO 最不具建设性的行为
  • 标签对我来说很好用。在带有默认 Apache 服务器的 OSX 10 上,只需按照此处的说明进行操作:stackoverflow.com/questions/5997000/…
【解决方案2】:

PHP 在服务器端处理,而不是客户端。您不能在客户端执行 PHP 代码。

【讨论】:

    【解决方案3】:

    这就是你不能在 JS 中运行 php。 第二个是你必须这样做以避免cmets出现问题:

    //<![CDATA[
        function showName() {
           document.getElementById("name").innerHTML = "<p>Hello <? echo $name; ?>, How are you?</p>";
        }
    //]]>
    

    【讨论】:

      【解决方案4】:

      从 2021 年开始:

      1-你可以使用jsphp

      2- CDATA 已弃用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-29
        • 2011-07-24
        • 2011-02-09
        • 2018-05-28
        • 2014-08-27
        • 1970-01-01
        相关资源
        最近更新 更多