1

これは、タイトルで要約するのは難しいです。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');
    }
4

1 に答える 1

1

私はここで問題を理解しました。電話の戻るボタンを押すと、jQuery Mobile が index.php ページを完全に実行していないと思います。

これをすべてのリンクに配置して、ajax なしでページを強制的にロードします。

data-ajax="false"

これに関する詳細については、http: //jquerymobile.com/test/docs/pages/page-links.htmlを参照してください。

于 2012-07-24T00:09:58.463 に答える