2013-01-14 66 views
1

我正在使用codeigniter flashdata在重定向后设置消息。那么如果我使用它没有AJAX,一切工作正常。如果我使用flashdata回应接收到的消息,它仍然会像应该那样工作,但如果我使用F5刷新一次,我仍然会看到该消息。 Flashdata在第二次刷新后被清除......我该如何解决这个问题?Codeigniter会话flashdata和ajax

这是,什么我的函数看起来像:

public static function message() 
{ 
    if (! empty(self::$message['message'])) 
    { 
     // build message 
     $message = '<div class="alert alert-' . self::$message['type'] . '"><button type="button" class="close" data-dismiss="alert">&times;</button><strong>' . self::$message['heading'] . '</strong>' . self::$message['message'] . '</div>'; 

     // clear static message array 
     self::$message = array(); 

     // return static message 
     return $message; 
    } 
    else 
    { 
     if (class_exists('CI_Session')) 
     { 
      // get flash message 
      $message = self::$CI->session->flashdata('message'); 

      // clear flash data 
      self::$CI->session->set_flashdata('message', null); 

      // process flash message 
      if (! empty($message)) 
      { 
       // slice flashdata into single parts 
       $message = explode('::', $message); 

       // return flash message 
       return '<div class="alert alert-' . $message[0] . '"><button type="button" class="close" data-dismiss="alert">&times;</button><strong>' . $message[1] . '</strong>' . $message[2] . '</div>'; 
      } 
     } 
    } 

    return ''; 
} 
+0

F5 + ctrl清除缓存。凡F5只刷新,不会丢失会话数据 –

回答

1

形式的CI Manual

如果你发现你需要通过一个额外的请求保留一个flashdata变量,你可以这样做使用keep_flashdata()函数。

$ this-> session-> keep_flashdata('item');

所以你需要修改你的AJAX处理方法来保留你需要的项目。

+0

我不想让他们,我想他们被清除 – Megamind

+0

确实,我误解了你的问题。您是否以任何方式修改/扩展了CI会话库? –