1

「オンラインユーザー」のリストがあり、prototype.jsのAjax.PeriodicalUpdaterを使用して30秒ごとに更新しています。

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

これは、PeriodicalUpdaterがログインページ全体でブロック要素を更新することを意味します。これは、RESTful認証を使用しているため、それにリダイレクトされます。

私はPHPセッションを使用していますが、これに頭を悩ませることはできません。

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

4

2 に答える 2

0

PEを作成するときは、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。)

于 2009-08-22T12:56:20.190 に答える
0

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

于 2009-08-22T13:01:24.933 に答える