2013-01-14 63 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會話庫? –