これは、タイトルで要約するのは難しいです。jQuery Mobile で CodeIgniter を使用しています。クリックすると(onChange)フォームを送信するドロップダウンリストを持つページ(index.php)があります。
<select name="organiser_dropdown" onchange="this.form.submit()">
それは正常に動作します。したがって、問題なく次のページ (view_events) に移動します。ただし、モバイル (Samsung Galaxy S Plus) の「戻る」ボタンを押して、index.php のドロップダウン リストからオプションを選択すると、フォームが送信され、正しいページ (view_events) に正しい情報が表示されます。をクリックすると、ドロップダウン リストのあるページに戻ります。
リダイレクトはなく、コード ロジックは正しいようです。デスクトップ ブラウザでテストすると、すべて正常に動作します。
問題は電話がページをキャッシュしていることであるとほぼ確信しているので、クリックしてindex.phpに戻ると、ページがリロードされず、どういうわけかこれが壊れていますか? ページのリロードに時間がかからないようなので、キャッシュだと思います。
onChange() 関数の代わりに送信ボタンを使用しましたが、すべて正常に機能します。これは、キャッシュの問題であることも示しています。
jQuery を使用して onChange イベントをリッスンし、非表示のボタンをクリックしてフォームを送信しました。問題なく動作しましたが、電話機の GUI にドロップダウン リストが表示されたままページがロードされました。これをオプションとして保持する場合、これは使いやすさの理由から少し奇妙に思えます。
これはネイティブの電話アプリではなく、モバイル Web サイトです。
CodeIgniter では、コントローラーはドロップダウン リストから選択された項目である 1 つのパラメーターを持つ関数を使用しています。
public function view_events($organiser_type = '') {...}
*$organiser_type* が URL 経由で送信されない場合、POST フォームから値を取得するコードがあります。
if($this->input->post('organiser_dropdown')) {
$organiser_type = $this->input->post('organiser_dropdown');
}