首先,这是文件的层次结构:
system/
...index.php
...core/
.......MasterView.php
.......Test.php
...sources/
.......ajax/
............ajaxtest.php
.......js/
............jstest.js
and so on.
index.php 包括 Test.php 。
Test.php 包含以下行:
$GLOBALS['foo'] = 'foo'; // note 1
require(ROOT.'/core/MasterView.php'); // render master view.
MasterView.php 包含简单的html标记,但在system / sources / js /目录中调用 jstest.js 。
system / sources / js /目录中的jstest.js 对 ajaxtest.php 进行了ajax调用。
system / sources / ajax /目录中的ajaxtest.php 包含以下行:
echo $GLOBALS['foo']; // note 2
在浏览器上运行index.php后,会出现以下错误:
Undefined index: foo in ...ajax\ajaxtest.php ...
特别指向note 2
行。我的问题是,为什么php在调用foo
之前在note 1
行上定义时无法识别MasterView.php
索引?
PS:我知道上面的方法并不是最好的方法,但我只是把它作为我问题的一个例子。
编辑:
$_SESSION['foo']
代替$GLOBALS['foo']
,只是提到我尝试过的一种解决方案。发生相同的错误。 Php无法识别索引foo
。答案 0 :(得分:4)
system / sources / js /目录中的jstest.js 对 ajaxtest.php 进行了ajax调用。
全局变量仅对同一请求是全局变量。如果您在中间使用AJAX请求连接文件,则全局变量不可用,因为AJAX将创建新请求。
您可以通过使用Cookie,数据库或Server Session State创建某种PHP sessionsDocs来跨多个请求共享数据。