1

会社用に作成している Web アプリにモバイル ソリューションを実装しようとしています。メインの PC ベースのアプリは問題なく動作しますが、モバイル部分の動作がおかしくなりました。

現在、ユーザーがログアウトする唯一の方法は、アプリのメイン ページにアクセスしてログアウトを選択することです (これは最終的に変更されますが、まだ開発の初期段階です)。ユーザーがアプリからログアウトすると、PHP セッション データをフラッシュするコントローラー (index.php) を呼び出し、ユーザーがリンクをクリックして再度ログインできるページ (form.html.php) を作成します。リンクは、特定のセッション変数が設定されているかどうかを確認するメイン コントローラーを呼び出し、設定されていない場合は、ログイン コントローラー/ページにリダイレクトします。ログアウト フォームはそのデータをすべてフラッシュするため、ユーザーはログイン ページにリダイレクトされる必要があります。前述のように、PC ブラウザーを使用すると、これは正常に機能します。

モバイル部分で何が起こっているかというと、ユーザーがリンクをクリックして再度ログインすると、モバイル デバイスはログアウトしたメイン ページに移動します。すべてのセッション データが非アクティブであるため、ページは事実上死んでいます。

モバイル アプリ (または JQuery モバイル) で前のページのキャッシュを停止するにはどうすればよいですか? どんな助けでも大歓迎です。参考までに: モバイル アプリのインフラストラクチャについて学んでいます。

index.php:

<?php
    session_start();
    $url = $_SESSION['myurl'];
    $root = $_SESSION['myroot'];
    $formTitle      = 'Exit NSI CRM';
    $formHeading    = 'NSI CRM System - Goodbye';
    $m = $_SESSION['mobile'];
    session_destroy();
    ($m?include ('m_form.html.php'):include ('form.html.php'));
    exit();
?>

m_form.html.php:

<!DOCTYPE html> 
 <html> 
    <head> 
        <meta name="viewport" content="width=device-width, initial-scale=1"> 
        <link rel="stylesheet" type="text/css" href="<?php print 'http://'.$_SERVER['HTTP_HOST'].'/crm/css/m_crm.css';?>">
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
        <script type="text/javascript">
            google.load("jquery", "1");
        </script>
        <link rel="stylesheet" href="http://code.jquery.com/mobile/1.2.0/jquery.mobile-1.2.0.min.css" />
        <?php include $root.'/inc/favicon.php'; ?>
        <title><?php print $formTitle; ?></title>
    </head> 
    <body> 
    <div data-role="page">
        <div>
            <br>
                <img src="<?php print 'http://'.$_SERVER['HTTP_HOST'].'/crm/img/handshake.jpg';?>">
            <h3>
                You have been logged out of the NSI CRM System. Good-bye!
            <br>
                To log back in, click <a style="font-size: larger;" href="<?php echo 'http://'.$_SERVER['HTTP_HOST'].'/crm/'; ?>">here.</a>
            </h3>
        </div>
    </div><!-- /page -->
    </body>
</html>
4

1 に答える 1

3

jquery mobile の ajax 機能を無効にしてみましたか?

$(document).bind("mobileinit", function () {
  $.mobile.ajaxEnabled = false;
});

jquery モバイル フレームワークが読み込まれる前にこれを呼び出します。

または、これらの属性のいずれかを追加してリンクを修正することもできます

rel="external", data-ajax="false"

例えば<a href="somepage.html" rel="external">Link</a>

参照: http://jquerymobile.com/demos/1.0a4.1/docs/pages/link-formats.html

于 2012-12-05T17:23:09.883 に答える