【发布时间】:2014-01-18 17:34:31
【问题描述】:
我正在使用 Ajax 调用来更新用户数据并将值存储在会话中。
(请注意,我不是在谈论将会话存储在数据库中)。
在 ajax 控制器中我这样调用:
$this->session->userdata['user']['email'] = 'some_new_email@blah.com';
然后为了测试它是否有效,我说:
print_r($this->session->all_userdata());
我可以清楚地看到会话已按预期更新。
但是,一旦我从 ajax 控制器返回,我会说:
print_r($this->session->all_userdata());
我刚刚更新的会话变量的值已经恢复到之前的(旧)状态。
问题:
为什么会发生这种情况,我该如何解决?
欢迎提出任何建议..
代码:
1) jquery ajax 调用将用户数据发布到此处: 然后将数据发送到 api,在该 api 中(再次)对其进行验证,然后在数据库中进行更新。 $response 是api调用的结果(json格式的更新用户对象):
$response = $account_repository->update_email($update_email_entity);
if($response['status']['code']==200)
{
// [Update users email in database was a success, now update session to reflect changes]:
$this->session->userdata['users']['email'] = $response['payload']['email'];
print_r($this->session->all_userdata());
}
else ...
2) 上面的 print_r 显示会话已正确更新。 ajax 返回后,我刷新页面(页面上有一个包含所有用户会话数据的 print_r)。 会话数据尚未更新。
信息:
我的 ajax 控制器函数只是帐户控制器中的另一个函数。同一控制器中的其他功能对会话进行更新,一切正常。只是当通过ajax访问控制器功能时,我遇到了这个问题。
以前有人见过这个问题吗?关于修复它的任何建议?
【问题讨论】:
-
你能添加你的代码吗?
-
好像你在使用 CodeIgniter 框架,如果是这样试试:$this->session->set_userdata('email', 'new@email.com');
-
我在上面添加了一些代码 - 谢谢
标签: php jquery codeigniter session