Mootool - Ajax vs $ _SESSION PHP

时间:2011-01-27 08:16:35

标签: php ajax session mootools

var ajax = new Ajax('process.php', {
   method: 'post',
   data:options,
   onComplete: function(data){
         alert(data);
    }

  });

process.php

    session_start();
    $_SESSION['data'] = 'hello';
    echo $_SESSION['data'];

的index.php

  session_start();
   echo $_SESSION['data'];    // return null

运行ajax我得到警报“你好”。好 运行index.php我什么都没得到

我无法获得$ _SESSION ['data'],这是未定义的。为什么?

2 个答案:

答案 0 :(得分:0)

如果您不知道ajax工作或不能,您可以这样做: 在process.php中取

file_put_contents('test.txt', 'its work', FILE_APPEND);

如果测试文件创建它意味着您调用该文件 如果没有设置会话,您必须遵守以下规定:

它在会话上写,但如果你想阅读它,你必须再次启动会话阅读 每当您想要从会话

读取时,再次从服务器上的会话文件中获取会话值

答案 1 :(得分:0)

两件事:

  1. 您可能刚从示例中删除了此代码,但您的mootools代码仅创建了Ajax对象。要让它发送请求,您需要使用请求方法:

    的Ajax.Request();

  2. 您是否尝试在ajax请求中发送您希望$ _SESSION ['data']等于的值?如果是这种情况,您将查看$ _POST变量以获取您通过Ajax对象发送到服务器的值(因为您已将'post'设置为请求方法)。如果您希望在$ _SESSION中设置您在请求中发送的值,则需要将它们放在process.php中。

  3. 试试这段代码(我最了解你要做的事情):

    对于javascript / mootools:

    var ajax = new Ajax('process.php', {
      method: 'post',
      data:{'data':'hello'}
    });
    ajax.request();
    

    在process.php中:

    session_start();
    $_SESSION['data'] = $_POST['data']; /* $_SESSION['data'] = 'hello'*/
    

    另外,如果您的ajax javascript包含在您回显$ _SESSION ['data']的index.php页面中,那么您需要刷新index.php才能看到对$ _SESSION所做的更改你的ajax请求。