【问题标题】:Can't use php variables defined in another file不能使用在另一个文件中定义的 php 变量
【发布时间】:2021-08-05 22:24:58
【问题描述】:

我有三个 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);

如果我将 script.php 更改为

,并不是没有呈现 php
alert(<?php echo '\'testing'. 'php' . 'echo\'' ?>);

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

alert('testingphpecho');

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

【问题讨论】:

  • script.php 由浏览器自行加载。如果你想使用config.php 中定义的常量,你还需要从那里获取config.php。
  • 您已经接近我们自己的想法了。检查script.php 是在什么时候/在什么请求中加载的。提示:与main.php不在同一个请求中。
  • 该死,我太傻了。没有看到它,因为实际项目是一个更大的框架,但是简化后它确实可以提供帮助,但非常感谢。你想把它写成一个正确的答案,以便我可以设置为正确,还是你想让我写一个以备将来帮助?
  • @jaafarNasrallah 我确定这之前已经出现过,所以它可能会被标记为重复,尽管我目前找不到合适的。但就我而言,这不是一个“愚蠢”的问题。特别是因为它是更大框架的一部分,所以很容易忽略这样的事情。
  • @rickdenhaan 我对 stackoverflow 并不陌生,在发布之前我已经看过了。所以谢谢

标签: javascript php require


【解决方案1】:

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

如果您想在script.php 中使用config.php 中定义的变量/常量,则必须将其加载到那里:

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

请注意,我已添加引号,因为 TEST_VAR 在您的示例中是一个字符串值。

如果您的 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 的代码使用。

【讨论】:

    猜你喜欢
    • 2011-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-31
    • 2020-05-21
    • 2011-04-13
    • 1970-01-01
    相关资源
    最近更新 更多