Javascript 使用jquery可以轻松完成这种老式的ajax调用吗?
我正在使用一些非常旧的代码,下面的代码用于监视会话状态。如果用户在X分钟内处于非活动状态(由check_session.php确定),他们将注销 服务器端的东西工作正常。实际上,现有的javascript看起来也可以正常工作,但看起来需要清理 以下是现有的javascript:Javascript 使用jquery可以轻松完成这种老式的ajax调用吗?,javascript,jquery,ajax,xmlhttprequest,migration,Javascript,Jquery,Ajax,Xmlhttprequest,Migration,我正在使用一些非常旧的代码,下面的代码用于监视会话状态。如果用户在X分钟内处于非活动状态(由check_session.php确定),他们将注销 服务器端的东西工作正常。实际上,现有的javascript看起来也可以正常工作,但看起来需要清理 以下是现有的javascript: function checkSessionStatus() { session_http.open('GET', '/check_session.php', true); session_http.
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中这样做是否可能不需要几十行代码?我可能已经知道如何做到这一点,但我不是只看到树木而看到森林——这里的一些指导是值得赞赏的。即使它是非常吸血鬼式的问题,也应该是这样的
$.get('/check_session.php', function( data ) {
if( data === 'inactive' ) {
window.location='/logout.php';
document.getElementById('session_divbox').innerHTML = data;
}
});
我不是在听你提到的“吸血鬼问题风格”。Le Goog返回:“吸血鬼问题风格”没有找到结果。嗯,没有使用
html()
或jQuery的选择器吗@詹迪,你让我失望了。哦,天哪。我怎样才能不让别人重写我的代码呢?老实说,那不是我想要的。我不确定我到底需要问什么——我想我是这样回答的:我不确定如何从ajax调用中获取值,并将其用于操作(如窗口重定向)。@FlorianMargaine:问题只是关于ajax:-)我明白你的要点,但我很难理解你的观点——我没有要求任何人让我成为一个萨米奇。我给你看了我的胡说八道三明治,给你看了一个更美味的帕尼诺三明治,还问你如何制作更好的三明治。我表示我还没有制作帕尼诺的经验,但我正在学习。我要求一些指导
而不是完全重写代码。我感谢你的帮助,但我不同意我的问题有失偏颇。如果您认为它是,可以随意将其标记为删除。如果您已经在使用jQuery进行其他操作,则可以。如果您计划使用jQuery来取代已经运行的香草ajax(并了解XHR)。。。。为什么?确保您编写的代码更少(一次,似乎您已经有了一个复制粘贴脚本可供使用)。。。但是开销加起来了。这不是很多,但是为什么在不需要的时候增加更多的开销呢?我最近检查了所有的代码,并用jquery替换了原型-所以是的,它已经开始发挥作用了。这是我计划转换的一个,我正准备转换。顺便说一下:您可能不需要每次都加载所有数据。每当新用户登录或注销时,都会更新服务器会话变量以显示发生此事件的时间戳。确保将其与初始HTML数据一起发送到客户端。现在在服务器上,您可以检查HTML是否需要发送。只为自己和客户节省了一点带宽。