重定向到上一页时如何发送变量数据

时间:2011-12-20 13:47:14

标签: codeigniter codeigniter-2

在完成特定任务后,我使用以下代码将用户重定向到上一页。

        if (isset($_SERVER['HTTP_REFERER']))
         {
         $this->session->set_userdata('previous_page', $_SERVER['HTTP_REFERER']);
         }
         else
         {
         $this->session->set_userdata('previous_page', base_url());
         }

我在控制器中使用的上述代码和另一个控制器中的以下代码..

    .... some other stuffs... I am updating database values here....

        $this->db->where('t_expenseid', $t_expenseid);
        query=$this->db->update('teacherexpense', $data); 


        redirect($this->session->userdata('previous_page'));

上面的代码工作正常,但我面临的问题是我想发送带有重定向的成功消息,以便当上一页加载成功消息时弹出(我已经有了jquery)。为此我在重定向上面添加了以下代码,但我不知道如何发送$ data或消息以及重定向。如果我能够发送它如何检索上一页控制器中的值。

 $data['msg']='Information Has been Successfully Inserted'; 

您能告诉我如何发送然后检索它吗?

谢谢:)

2 个答案:

答案 0 :(得分:10)

您可以使用CI的set_flashdata。刷新页面消息变为空白后,您只能使用该消息一次。

  $this->session->set_flashdata('message', 'Authentication failed');

  redirect(site_url('message/index/'), 'refresh'); 

在该页面上,您可以通过

抓住此消息
$message = $this->session->flashdata('message').

答案 1 :(得分:2)

考虑使用flashdata,这通常用于您想要重定向到页面并显示消息的情况。请记住,邮件只会显示一次。如果用户刷新页面,则消息将消失。

以下是您将如何使用它:

$this->db->where('t_expenseid', $t_expenseid);
query = $this->db->update('teacherexpense', $data);

// set flashdata
$this->session->set_flashdata('message', 'Information Has been Successfully Inserted');

redirect($this->session->userdata('previous_page'));

然后在“上一页”中,您可以查看邮件并显示它是否存在:

// get flashdata
$message = $this->session->flashdata('message');

if ($message) {
    // pass message to view, etc...
}