PHP + AJAX(jQuery) - 读取$ .post()返回的会话数据

时间:2011-11-08 12:56:15

标签: php jquery ajax session

我目前正在撰写“编辑帐户”模块。使用jQuery.post();我可以成功更新我的数据库,我可以从PHP脚本写入会话变量 - 但是, 当我试图访问我刚刚写入的Session变量时,数据似乎没有更新。

我在Ajax.php中写了这样的会话:$_SESSION['email'] = 'john@doe.com';

我的jQuery(缩小)成功回调:

$.post(...,function(res)
{
  if(res=='success')
  {
    // Alert the new E-Mail, read from the Session!
    alert("<?php echo $_SESSION['email']; ?>"); 
  }
}

但是,警报不会输出john@doe.com,它会输出整个页面加载时的电子邮件。刷新页面时,会话数据已正确更新。

我在index.php(我的网站)和Ajax.php中都有session_start();

如果您需要更多信息,请告诉我。 :)

2 个答案:

答案 0 :(得分:1)

首先它应该是

alert("<?php echo $_SESSION['email']; ?>");

其次$ .post是动态的,但<?php echo $_SESSION['email']; ?>是静态的。它在加载时渲染一次,而不是每次你创建一个.post(),如果

$_SESSION['email'] = 'blah';到页面加载时,警报将始终为alert("blah");,直到您重新加载页面。

如果你想提醒新的会话变量,你必须向php文件发出一个新的ajax请求(即return_session.php?key = email),这将返回新的会话变量

答案 1 :(得分:1)

这是因为加载页面时会生成警报字符串。当你发出一个ajax请求它仍然没有改变,因为它没有刷新。 在ajax成功之后,你应该输出responseText,然后它就会起作用。