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

php中未定义的索引(键)错误,php,ajax,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 re

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

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.jsajaxtest.php进行了ajax调用

ajaxtest.php在system/sources/ajax/目录中包含以下行:

echo $GLOBALS['foo']; // note 2
在浏览器上运行index.php后,出现以下错误:

Undefined index: foo in ...ajax\ajaxtest.php ...
特别是指向
注释2
行。我的问题是,当我在调用
MasterView.php
之前在
note1
行定义了
foo
索引时,为什么php不识别它


PS:我知道上面的方法不是最好的方法,但我只是举例说明我的问题

编辑:

  • 我在这两个文件中都尝试过使用
    $\u SESSION['foo']
    而不是
    $GLOBALS['foo']
    ,仅举一个我尝试过的解决方案。同样的错误也会发生。Php无法识别索引
    foo
  • system/sources/js/目录中的jstest.jsajaxtest.php进行了ajax调用

    全局变量仅对同一请求是全局的。如果将文件与介于两者之间的AJAX请求连接,则全局变量不可用,因为AJAX将创建一个新请求

    通过使用cookie、数据库或应用程序创建某种类型的应用程序,您可以跨多个请求共享数据

    system/sources/js/目录中的jstest.jsajaxtest.php进行了ajax调用

    全局变量仅对同一请求是全局的。如果将文件与介于两者之间的AJAX请求连接,则全局变量不可用,因为AJAX将创建一个新请求


    通过使用cookies、数据库或.

    Spot-on创建某种类型的应用程序,您可以跨多个请求共享数据。一个可能的解决方案是将数据存储在$\u会话中。在PHPSession需要配置和具备先决条件中查找会话处理文档。实际上,它们将在您的情况下工作,但是,您需要确保客户端在每个请求中使用适当的会话标识符。将会话id添加到ajax请求。@NeigylR.Noval
    $\u会话
    $GLOBALS
    不能互换。请参阅编辑。会话也不起作用。Php仍然无法确定索引“foo”。如果您已经在原始请求中设置了该会话值,但无法在以后的请求中获得该值,则会话将中断。你需要先把它修好。可能仅仅在两个地方更改变量名是不够的。请参阅答案中指向sessions PHP手册的链接。确保将会话id与AJAX请求一起传递:Spot-on。一个可能的解决方案是将数据存储在$\u会话中。在PHPSession需要配置和具备先决条件中查找会话处理文档。实际上,它们将在您的情况下工作,但是,您需要确保客户端在每个请求中使用适当的会话标识符。将会话id添加到ajax请求。@NeigylR.Noval
    $\u会话
    $GLOBALS
    不能互换。请参阅编辑。会话也不起作用。Php仍然无法确定索引“foo”。如果您已经在原始请求中设置了该会话值,但无法在以后的请求中获得该值,则会话将中断。你需要先把它修好。可能仅仅在两个地方更改变量名是不够的。请参阅答案中指向sessions PHP手册的链接。确保将会话id与AJAX请求一起传递: