我正在处理一些相当旧的代码,以下内容用于监控会话状态。如果用户在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中执行此操作而不需要使用几十行代码?我可能已经知道如何做到这一点,并没有看到森林的树木 - 这里的一些指导表示赞赏。
答案 0 :(得分:2)
即使它的吸血鬼问题风格,也应该看起来像
$.get('/check_session.php', function( data ) {
if( data === 'inactive' ) {
window.location='/logout.php';
document.getElementById('session_divbox').innerHTML = data;
}
});