编码器会话flashdata和ajax

Codeigniter session flashdata and ajax

本文关键字:ajax flashdata 会话 编码器      更新时间:2023-09-26

我使用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 '';
}

形成CI手册:

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

$ this→会话→keep_flashdata("项目");

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