1

私はかなり古いコードで作業しており、セッションステータスを監視するために以下が使用されています。ユーザーがX分間非アクティブである場合(check_session.phpによって決定)、ユーザーはログアウトされます。

サーバー側のものは正常に動作します。実際には、既存のJavaScriptも問題なく機能しているように見えますが、クリーンアップが必要なようです。

既存のJavaScriptは次のとおりです。

function checkSessionStatus() 
{ 
    session_http.open('GET', '/check_session.php', true); 
    session_http.onreadystatechange = handleSessionHttpResponse; 
    session_http.send(null); 
}

function handleSessionHttpResponse() 
{ 
    if (session_http.readyState == 4) 
    { 
        results = session_http.responseText; 
        if (results == 'inactive') 
        {
            window.location='/logout.php';
            document.getElementById('session_divbox').innerHTML = results; 
        }
    }
}

function get_session_HTTPObject() 
{
    var xml_session_http; 
    if (!xml_session_http && typeof XMLHttpRequest != 'undefined') 
    { 
        try 
        { 
            xml_session_http = new XMLHttpRequest(); 
        } 

        catch (e) 
        { 
            xml_session_http = false; 
        } 
    } 
    return xml_session_http; 
} 
var session_http = get_session_HTTPObject(); 

function init_page_header() 
{
    window.setInterval( 'checkSessionStatus();',  30000);
}

これは、それが行っていることに対して信じられないほど長いようです。

私はまだjqueryを学んでいて、このような基本的なajax呼び出しを行うことができます。これにより、戻り値がdivに配置されます。

$(document).ready(function() 
{
    $('#users_online').load('/show_users_online.php');
    var refreshId = setInterval(function() 
    {
        $('#users_online').load('/show_users_online.php');
    }, 2000);
    $.ajaxSetup({ cache: false });
});

コードの最初のビットの問題は、「inactive」の値を返し、それがクライアントによって処理されることです(ウィンドウリダイレクト)。

数十行のコードで終了することなく、Jqueryでこれを行うことは可能ですか?私はすでにこれを行う方法を知っているかもしれません、そして木のために森を見ていません-ここでいくつかのガイダンスはありがたいです。

4

1 に答える 1

2

その非常に吸血鬼の質問スタイルであっても、次のようになります

$.get('/check_session.php', function( data ) {
    if( data === 'inactive' ) { 
        window.location='/logout.php';
        document.getElementById('session_divbox').innerHTML = data;
    }
});
于 2012-12-20T15:30:13.913 に答える