1

リダイレクト後にメッセージを設定するために codeigniter flashdata を使用しています。ajaxなしで使用している場合は、すべて正常に動作します。flashdata で受信したメッセージをエコーアウトしても、正常に機能しますが、F5 で一度更新すると、そのメッセージが表示されます。2 回目の更新後に 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 '';
}
4

1 に答える 1

1

CIマニュアルを作成します。

追加のリクエストで flashdata 変数を保存する必要がある場合は、 keep_flashdata() 関数を使用して保存できます。

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

そのため、必要なアイテムを保持するために AJAX 処理メソッドを変更する必要があります。

于 2013-01-14T11:56:19.833 に答える