我想知道我是否只是发现了一个错误,或者编程的时间可能不会让我看到明显的错误?
以下是我的代码示例:
class home extends CI_Controller
{
public function __construct()
{
}
public function edit()
{
// Prints: John
print_r($this->session->userdata('name'));
$this->load->view('home/edit');
}
public function ajax_edit()
{
$this->session->userdata('name', 'Obama');
// Prints: Obama
print_r($this->session->userdata('name'));
}
}
我通过ajax调用函数ajax_edit
,而印刷品是"奥巴马",这是正确的。之后,我刷新页面(到edit
函数),name
的输出是" John"。
为什么上帝的天堂不会更新会议的价值"奥巴马"?似乎在刷新之后它重置了一些东西并且回到旧的价值" John"。
答案 0 :(得分:1)
问题是你没有使用正确的方法。
要为CI会话设置任何新信息,您需要使用set_userdata()
,以便检索或检查您使用userdata("key")
会话中的最新信息。
解决方案:重写您的ajax_edit()
方法代码,如下所示:
public function ajax_edit() {
$this->session->set_userdata('name', 'Obama');
// Prints: Obama
print_r($this->session->userdata('name'));
}
来源:http://www.codeigniter.com/user_guide/libraries/sessions.html#adding-session-data