不能使用在另一个文件中定义的 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.
的代码
我有三个 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.