Codeigniter会话flashdata和ajax

时间:2013-01-14 08:06:55

标签: javascript ajax codeigniter session message

我正在使用codeigniter flashdata在重定向后设置消息。好吧如果我在没有ajax的情况下使用它,一切都运行正常。如果我回应用flashdata收到的消息,它仍然会像它应该工作但是如果我用F5刷新一次,我仍然看到该消息。第二次刷新后Flashdata被清除......我该如何解决这个问题?

这就是我的功能:

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 '';
}

1 个答案:

答案 0 :(得分:1)

形成CI Manual

  

如果您发现需要通过其他请求保留flashdata变量,则可以使用keep_flashdata()函数执行此操作。

     

<强> $这 - &GT;会话而&GT; keep_flashdata( '项目');

因此,您需要修改AJAX处理方法以保留所需的项目。