2016-07-15 12 views
0

以下のjQueryを使用してデータテーブルを更新しています。私はこれを行うには良い方法があると知っているが、当分の間、これは私のために働いているものです。jQuery:非アクティブな更新/ログアウト

上記のコードを使用して
var idleTime = 0; 
var idleInterval = setInterval(funcion(){ 
    idleTime = idleTime + 1; 
    if (idleTime > 1) 
    { 
    $('#example1').DataTable().state.clear(); 
    window.location.reload(); 
    } 
}, 60000); 

$(this).mousemove(function(e){ 
    idleTime = 0; 
}); 
$(this).keypress(function(e){ 
    idleTime = 0; 
}); 

、約1分後に、ページがデータテーブルをクリアし、リロードしますページ。

アクティブでないためにリフレッシュされた回数を調べるコードに追加できるものはありますか? 120回のリフレッシュ後、ユーザーをログアウトします。

ページが更新され続けるかどうかはわかりません。

+0

情報を保持する時間の長さに応じて、 'localStorage'または' sessionStorage'にカウントを入れてください。しかし、よりよい解決策は、サーバーセッションのタイムアウトを1分に設定し、クライアントを気にする必要がないことです。 –

+0

window.locationの使用は最善の方法ではありません。おそらく簡単な方法ですが、データを取得してdataTableに追加するために$ .get( 'your url')のようなajaxを使用できます。 – Mimouni

答えて

1

リロード間のリロード回数を記録する方法が必要です。あなたはページ全体をリロードするので、私はすぐに二つの方法を考えることができます:

1)数を維持し、

2活性

がある場合は、適切にクッキーをリセットするためにクッキーを使用)、サーバーに値を送信するためにパラメータを使用サーバーがJavaScriptをあなたのJavaScriptに挿入するようにします。

これはjavascriptで処理したい場合です。

通常、サーバー側のセッションでログアウトを処理します。次に、自動リロードがサーバによって「アクティビティ」として識別されていないことを確認する必要があります。私はよく好きしているこのことができます

希望...

0

はあなたに簡単な解決策を提供していますが、限り、あなたはすでに、より良いjqueryのを使用してAJAXを使用して、それを楽しむことができます。

var idleTime = 0; 
var idleInterval = setInterval(funcion(){ 
    idleTime = idleTime + 1; 
    if (idleTime > 1) 
    { 
    var url  = window.location.href + 'page_table.php'; 
    //you should specify a page_table.php that return only the table. 

     $.get(url, function(data) { 
      $('#example1').html(data); //<----- refresh only the zone with the id : #example 
      $('#example1').DataTable(); // <---- important : set the element as DataTable. 
     }); 
    } 
}, 60000); 

$(this).mousemove(function(e){ 
    idleTime = 0; 
}); 
$(this).keypress(function(e){ 
    idleTime = 0; 
}); 

アイデアはテーブルの一部だけをリフレッシュすることです。

0

あなたのために動作する場合は、現在のコードを保存しましょう。また、localStorageに依存しないでください。また、ブラウザによっては動作する可能性があります。情報をURLに保存しましょう。このよう

var idleTime = 0, 
    refreshCount = window.location.hash ? 
      Number(window.location.hash.replace("#", '')) : 0; //get current counter 
var idleInterval = setInterval(function(){ 
    //...all your existent code 

    /*let's rewrite the url with our new counter, so now when the 
     page is reloaded and th script is executed it gets the new value */ 
    if(refreshCount == 60) { 
     //do your magic it has been refreshed 60 times 
    } else { 
     window.location = window.location.href.replace('#' + refreshCount, '') 
         + '#' + (refreshCount+1); 
     window.location.reload(); 
    } 
}, 1000); 

は、この情報がお役に立てば幸いです。

乾杯。

関連する問題