不能使用在另一个文件中定义的 php 变量

Can't use php variables defined in another file

我有三个 php 文件,一个定义常量,另一个具有 html 标记,并包含一个 php 文件,用于呈现 js 内容。第三个是呈现 js 内容的 php 文件。代码如下所示。

第一个名为“config.php”的文件:

<?php

define('TESTVAR','test variable');
?>

第二个文件名为“main.php”:

<?php
require_once ('config.php');
?>

<!doctype html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>

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

名为“script.php”的第三个文件:

alert(<?php echo TESTVAR ?>);

这是加载为 script.php:

<b>Notice</b>:  Use of undefined constant TESTVAR - assumed 'TESTVAR' in <b>C:\xampp\htdocs\trials\testphpinjs\script.php</b> on line <b>2</b><br />
TESTVAR);

并不是 php 没有被渲染,如果我将 script.php 更改为

alert(<?php echo '\'testing'. 'php' . 'echo\'' ?>);

它运行完美,加载的脚本可以从开发者工具中查看为

alert('testingphpecho');

我唯一的问题是我无法访问之前需要或包含的页面中的变量

使用<script type="text/javascript" src="script.php"></script>,浏览器会发出新的请求直接加载script.php。由于 PHP 是无状态的,因此该请求将不会在与 main.php 中进行的任何处理相同的上下文中处理。

如果您想在 script.php 中使用 config.php 中定义的 variables/constants,您必须在其中加载它:

<?php require_once('config.php'); ?>
alert("<?php echo TESTVAR; ?>");

Note that I've added quotation marks, since TEST_VAR is a string value in your example.

如果您的 Javascript 代码不仅仅依赖于 config.php,并且其行为取决于在 main.php 中完成的预处理,最好将其作为内联加载改为脚本:

<?php
require_once ('config.php');
?>

<!doctype html>
<html lang="en">
<head>
    <title>Document</title>
</head>
<body>

<script type="text/javascript">
<?php include('script.php'); ?>
</script>
</body>
</html>

这样,PHP 将在与 main.php 相同的上下文中加载 script.php 文件,并且在那里定义的所有常量和变量将(应该)可供输出您的 Javascript.

的代码