4

画面を再設計できない、ヘッダーのキャッシュなしタグを使用できない、ユーザーがログアウトして戻るボタンを押した後にキャッシュされた画面が表示されないようにする必要がある、従来のサイトの要件があります。

私はほとんど解決しています(以下のコードビットを参照してください)

ページが読み込まれると、JQuery AJAX 関数を使用して Web アプリを呼び出し、ユーザーがまだログインしているかどうかを確認します。ログインしていない場合、ユーザーはログイン画面にリダイレクトされます。

<html>
<head>
 <!-- all the usual header stuff, plus links to the jQuery libaries, first script tag on page below -->

<script language = "javascript">

 $.get("/acme/confirm_authentication",function(data){
            if( data != "confirmed"){
                location.href = "logout";
            }
  }); 



</script>
</head>
<body>

blah blah blah
</body>
</html>

この回避策について私が気に入らない大きな点は、JQuery 関数が完了する前に、一瞬だけコンテンツを取得できることです。

JQuery AJAX 関数が停止するまで、ページの読み込み/レンダリングを防ぐ方法はありますか?

ありがとう


更新: 回答:


以下の受け入れられた回答を変更して、「キャッシュ:false」オプションを含めました。Firefox と Chrome では、[戻る] ボタンからアクセスしたページのキャッシュされたコピーは .ajax() を実行しますが、変数 "data" のキャッシュされたコピーを使用するため、古い回答が得られます。

$.ajax({
 url: "/acme/confirm_authentication",
 async:false,
 cache: false,
 success: function(data) {
     if( data != "confirmed"){
         location.href = "logout";
     }
 }         

});

4

1 に答える 1

8

プロパティをfalseに設定したajax関数でそれを行うことができます。async

  $.ajax({
     url: "/acme/confirm_authentication",
     success: function(data) {
         if( data != "confirmed"){
             location.href = "logout";
         }
     },
     async:false
  });
于 2013-08-14T21:25:46.863 に答える