Codeigniter сесия flashdata и ajax

Използвам 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 '';
}

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 Session? - person Silviu G; 14.01.2013