php错误中未定义的索引(键)

时间:2011-12-23 17:41:48

标签: php ajax

首先,这是文件的层次结构:

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:我知道上面的方法并不是最好的方法,但我只是把它作为我问题的一个例子。

编辑:

  1. 我尝试在两个文件中使用$_SESSION['foo']代替$GLOBALS['foo'],只是提到我尝试过的一种解决方案。发生相同的错误。 Php无法识别索引foo

1 个答案:

答案 0 :(得分:4)

  system / sources / js /目录中的

jstest.js ajaxtest.php 进行了ajax调用。

全局变量仅对同一请求是全局变量。如果您在中间使用AJAX请求连接文件,则全局变量不可用,因为AJAX将创建新请求。

您可以通过使用Cookie,数据库或Server Session State创建某种PHP sessions­Docs来跨多个请求共享数据。