Сессия Codeigniter flashdata и ajax

Я использую flashdata codeigniter для установки сообщений после перенаправления. Ну, если я использую его без 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 '';
}

person Megamind    schedule 14.01.2013    source источник
comment
F5+ctrl очищает кеш. Где F5 только обновляет и не теряет данные сеанса   -  person Muhammad Raheel    schedule 14.01.2013


Ответы (1)


Сформируйте руководство по CI:

Если вы обнаружите, что вам нужно сохранить переменную flashdata с помощью дополнительного запроса, вы можете сделать это с помощью функции keep_flashdata().

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

Поэтому вам нужно изменить метод обработки AJAX, чтобы сохранить нужные вам элементы.

person Silviu G    schedule 14.01.2013
comment
Действительно, я неправильно понял ваш вопрос. Вы каким-либо образом модифицировали/расширяли библиотеку сеансов CI? - person Silviu G; 14.01.2013