会话在更新前不会更新

时间:2015-11-12 13:26:57

标签: php jquery ajax session

我正在尝试使用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);

谢谢!

1 个答案:

答案 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;值。要强制服务器将所有更改写入会话,请在使用下一个脚本读取之前关闭会话以进行写入。