1

こんにちは皆さん、私は Codeignitor でアプリを開発しています。コンテンツは、3 つの選択タグに基づいて更新されます。最初の 1 つの都市は、その都市の地域選択タグを取り込み、同時にカテゴリ選択タグを表示します。一連の ajax 呼び出しのセットアップに成功しました。ajax呼び出しに応じてコンテンツが更新されます。ここで、コンテンツ リンクをクリックしてコンテンツを表示します。成功...しかし、ブラウザの戻るボタンを押すと、選択タグがめちゃくちゃになります。そのため、ユーザーがブラウザの戻るボタンを押したときに、同じタグ選択段階にとどまることができるように、セッション変数が必要であることに気付きました。今のところ、セッションを正常に保存できます。たとえば、都市としましょう。それから私は使用しました

$(document).ready(function () {
            $city="<?php echo $this->session->userdata('city'); ?>";
            alert($city);
        });

すべてが問題ないかどうかを確認します。問題は、ロサンゼルス(LA):1 ロンドン:2

シナリオ 1: LA を選択し、ロードされたコンテンツをクリックして表示し、ブラウザの [戻る] ボタンを押すと、空白のアラート ボックスが表示されます。しかし、リロードすると、1が含まれているアラートが表示されます

シナリオ 1 の後のシナリオ 2: LA を選択し、次にロンドン ビュー コンテンツを選択して戻ってきたところ、アラート ボックスに1が表示されています。アラートボックスに2が表示されているページをリロードするので、このリンクを掘り下げて問題の原因を見つけました...更新されたセッションは、次のサーバー要求でのみ提供されるようです。私の問題を見ることができるように、ユーザーを中断したのと同じ状態に保つことができるように、更新された情報が必要です。

この問題を解決する方法について何か提案はありますか?

4

1 に答える 1

0

それがクッキーの仕組みです。クライアント側からのリクエストとともに送信されます。

$_COOKIE回避策は、変数を手動で設定することです。

setcookie('yourcookie', 'something', time()+3600, '/', 'http://example.com', false, true);
$_COOKIE['yourcookie'] = 'something';

// yay I can now access it right away
echo $_COOKIE['yourcookie'];

アップデート

私はあなたの質問を誤解したと思います。ブラウザの戻るボタンを使用する際に問題が発生しているように見えますか? あれは正しいですか?その場合、常にページの以前の状態を取得し、Cookie は実際には設定されません (ブラウザーのキャッシュから取得するため)。これが機能する唯一の方法は、何らかのスクリプト (つまり JS) を使用してページを更新することですが、それは面倒です。または、サーバーへの AJAX 呼び出し (新しい要求) を通じて Cookie 値を取得します。

于 2012-08-26T13:04:12.903 に答える