Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/399.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery可以轻松完成这种老式的ajax调用吗?_Javascript_Jquery_Ajax_Xmlhttprequest_Migration - Fatal编程技术网

Javascript 使用jquery可以轻松完成这种老式的ajax调用吗?

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.

我正在使用一些非常旧的代码,下面的代码用于监视会话状态。如果用户在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中这样做是否可能不需要几十行代码?我可能已经知道如何做到这一点,但我不是只看到树木而看到森林——这里的一些指导是值得赞赏的。

即使它是非常吸血鬼式的问题,也应该是这样的

$.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是否需要发送。只为自己和客户节省了一点带宽。