javascript - 在单独的文档中时,在 Javascript 中存储 PHP 不起作用

标签 javascript php

当我将脚本直接放入 .PHP 文件时,我的脚本可以完美运行:

function setup()
{
    var setRows = <?php if(!isset($_GET['rows']))echo 3;else echo $_GET['rows']; ?>;
    var setColumns = <?php if(!isset($_GET['columns']))echo 3;else echo $_GET['columns']; ?>;
    document.getElementById('rows').value = setRows;
    document.getElementById('columns').value = setColumns;
    document.getElementById('rowOutputId').value = setRows;
    document.getElementById('colOutputId').value = setColumns;
}

但是,当我将它放在一个单独的文件中并链接它时,它会打印出文字字符串而不是正确的值。所以像这样:

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

它呼应了以下内容:

<?php if(!isset($_GET['rows']))echo 3;else echo $_GET['rows']; ?>

此外,重要的是要注意,当我将它直接放在 HTML 文件中时,它会完美地存储 PHP 而没有引号,但是在单独的文件中,如果我去掉引号,它会给我以下错误:

未捕获的语法错误:意外的标记<

最佳答案

您的服务器根据扩展名决定如何处理请求(这是一种过度简化,但现在会这样做)。

您的服务器已配置为处理以 .php 结尾的文件作为一个 php 文件。这意味着,当您从 Apache、Nginx 或您正在使用的任何网络服务器软件请求此文件时,您的网络服务器将首先要求 php 软件解析执行它。当 PHP 软件执行第一个代码时,它将运行 <?php 之间的任何内容。和 ?> .然后它将代码执行的结果返回给您的网络服务器,该服务器会将其传回给客户端。

但是,当您的浏览器加载 .js 文件时,您的网络服务器会将其视为“普通”文件。然后它将读取文件并将其直接返回给客户端,而不是先将其传递给 PHP 软件。因此,不会执行或解释任何内容,您只会看到文件中的所有文本。

现在假设您将 PHP 代码放入您的 .js 中文件。它没有被执行,因此当您的浏览器收到来自网络服务器的响应时,PHP 代码仍然存在。然后您的浏览器将尝试解析并执行文件中的 javascript,但是您的 <?php标记不是有效的 javascript。因此,尝试执行此文件将导致浏览器控制台出现错误。

您可以在您的网络服务器配置中配置哪些扩展应该被视为 PHP 代码。 对于 Apache,这是通过 addHandler 完成的。 , 而对于 nginx 这可以通过 location directives 完成. 我强烈建议不要将其更改为将 javascript 视为 PHP,因为您的 javascript 文件不应包含 PHP 代码。如果您想将某些内容传递给变量,只需在 PHP 文件生成的 HTML 代码中执行即可。

关于javascript - 在单独的文档中时,在 Javascript 中存储 PHP 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49971326/

相关文章:

javascript - 使用 document.currentScript 将数据附加到 div

javascript - :target support 的 JS 测试

php - 如何回显表的正确行数

php - Zend 框架 : How to unset the one stylesheet from the HeadLink helper

javascript - 如何只改变一个元素 onHover (ReactJS)

javascript - JSON添加、删除、获取

javascript - 禁止访问源为 'null' 的 Iframe

php - mysql中的多维表

php - 为什么 base64_decode 在无效输入时不返回 false?

php - 使用 mysqli 和准备好的语句时命令不同步