我正在尝试使用AJAX调用来更新会话变量,然后重定向并在下一页上获取该变量。我的问题是,一旦页面被重定向,会话才会更新,直到我刷新。
我认为这可能与会话是第一个被加载的事实有关,但我无法找到解决方法。这是我的相关代码:
输入页面
$.post('save.php', {data:$input})
.done(function() {
window.location.replace('result.php');
}
);
save.php
session_start();
// make sure previous value has been deleted
unset($_SESSION['word']);
$_SESSION['word'] = $_POST['word'];
result.php
session_start();
$data = $_SESSION['word'];
print_r($data);
谢谢!
答案 0 :(得分:1)
我认为@skywalker有一个非常好的观点,但是如果你想像现在一样用ajax做这件事:
在php
文件中保存session
将其更改为
session_start();
// make sure previous value has been deleted // <--- not needed
unset($_SESSION['word']);
$_SESSION['word'] = $_POST['word'];
session_write_close(); //<---------- Add this to close the session so that reading from the session will contain the new value.
解释:session
存储在服务器上的文件中。编辑会话时,文件将被锁定以进行写入,但不会被读取。当服务器没有将所有更改都写入会话文件并且下一个PHP脚本尝试阅读会话时,您将获得“旧”的#39;值。要强制服务器将所有更改写入会话,请在使用下一个脚本读取之前关闭会话以进行写入。