2009-08-22 17 views
1

prototype.jsのAjax.PeriodicalUpdaterを使用して30秒ごとに更新する「オンラインユーザー」のリストがあります。Prototype.jsを停止するユーザーログアウト時のAjax.PeriodicalUpdater

ユーザーがサイトで開いている2つのタブ/ウィンドウを持っていて、そのうちの1つでログアウトすると、PeriodicalUpdaterがキャンセルされないという問題があります。

これは、安静な認証があるので、PeriodicalUpdaterがログインページ全体でブロック要素を更新することを意味します。

私はPHPセッションを使用しています。私は実際にこのセッションで私の頭をまっすぐにすることはできません。

あなた方の誰かが私を正しい方向に向けることができますか?

答えて

0

結果を返すメソッドを変更して、認証されたセッションにアクセスする必要はありませんが、戻ります認証されたセッションが存在する場合にのみ有効な情報です。それ以外の場合は、更新を停止する必要があることを示す値とオンラインユーザーのブロックに表示するのに適したメッセージを返します。これはおそらくJSONを返す必要があります。悪いことではなく、JSONの一部としてHTMLスニペットと組み合わせるか、JSONデータからクライアント上にHTMLを作成するだけです(より良いIMOビューはマークアップを行う正しい場所です)。

+0

もちろん!男、あなたはスターです。私は既にアクセスコントロールクラスに除外ファイルのリストを持っています。 私は$ excludedPages配列にonlineList.phpを追加し、if(isset($ _ SESSION ['user_id']))でページ全体をラップしました。 ありがとうございます! – Preben

0

PEを作成する場合は、それへの参照を保持:

// At global scope, or ideally if you have a namespaced object, use that 
var thePE; 

// Where you create the PE 
thePE = new PeriodicalExecuter(yourFunction, 3); 

そして、あなたはそれを停止したい、(それが開始されたと仮定した場合)を停止するよう指示:

if (thePE) { 
    thePE.stop(); 
    thePE = undefined; 
} 

( PeriodicalExecuter#stop docs here

+0

チップをありがとう!私はどこで、いつ私が実際にそれを止めたいのか把握しようとしています。私のPHPセッションがJavaScriptでまだアクティブであるかどうかを確認する方法はありますか? – Preben

関連する問題