我目前正在撰写“编辑帐户”模块。使用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();
如果您需要更多信息,请告诉我。 :)
答案 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,然后它就会起作用。