当我将脚本直接放入 .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/