Ajax轮询请求

Ajax轮询请求

什么是轮询?

  轮询(polling):客户端按规定时间定时向服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接。

  Ajax轮询需要服务器有很快的处理速度与快速响应。

Ajax轮询实现

Ajax轮询原理

客户端是按照规定时间(这个时间由你设定,此处默认为1秒)像服务端发送请求,前一次请求完成后,无论有无结果返回,一秒之后下一次请求又会发出。这就叫做Ajax轮询。

<script>
$(function(){
    var code,status;
    function getResult(){
        var params = {
            code: code,
            operate: ‘什么操作TODO:‘,
        };
        $.ajax({
            type: ‘POST‘,
            url: "请求地址TODO:",
            data: params,
            success: function(response) {
                console.log(‘成功啦‘);
                //对成功数据的操作TODO:
                clearInterval(status);
            },
            dataType: ‘json‘,
            timeout: 30*1000,// 超时时间
            // 超时意味着出错了
            error: function (error) {
              console.log(‘失败啦‘);
            }

        });
   }

  });
//获取code。如果code存在则调用轮询来获取数据
    if(code){
           status = setInterval(getResult, 1000);
      }

  </script>

setInterval()用法:

 function direct() {
        console.info( "time: ", ( new Date() ).getTime() );
    }
    function showlog() {
        setInterval(direct(), 1000);
    }
    function showlog_2() {
        setInterval( direct, 1000 );
    }
    function showlog_3() {
        setInterval( function () {
            direct();
        }, 1000 );
    }
    function showlog_4() {
        setInterval( "direct()", 1000 );
    }
    // showlog(); //=> 执行一次
    // showlog_2(); //=> 每隔 1000毫秒 执行一次
    // showlog_3(); //=> 每隔 1000毫秒 执行一次
    // showlog_4(); //=> 每隔 1000毫秒 执行一次

长轮询

  ajax实现:在发送ajax后,服务器端会阻塞请求直到有数据传递或超时才返回。 客户端JavaScript响应处理函数会在处理完服务器返回的信息后,再次发出请求,客户端再次建立连接,周而复始

<script>
$(function() {
    //定义code
    var code;
    //获取code  TODO:
    getStatusLong();
    //  长轮询执行
    function getStatusLong()
    {
        var data = {
            operate: ‘操作TODO:‘,
            code: code,
        };
        $.ajax({
            type: ‘post‘,
            url: url,
            data: data,
            success: function(response) {
                if (response.error == 0) {
                //成功的操作
                }
            },
            dataType: ‘json‘,
            timeout: 10*1000,// 超时时间
            // 超时意味着出错了
            error: function (error) {
                console.log(error);// timeout
                // 立即发出请求
                getOrderStatusLong();
            }

        });

    }
});
</script>

原文地址:https://www.cnblogs.com/-wenli/p/10982264.html

时间: 2024-07-31 00:56:22

Ajax轮询请求的相关文章

ajax轮询请求实现源码分享

ajax轮询请求状态是ajax学习中非常重要的也是必须掌握的知识点,今天就和大家一起来分享一下这部分内容,一起来看看吧.      这里要实现的功能是:通过扫码微信公众号带参数的二维码,来登录网站.      但很明显,如果ajax不间断的请求服务器,这样会加重服务器的负荷,所以本例采用的是js的setInterval来周期性调用执行一个ajax函数来来向服务器请求数据,但请求成功或者请求一定次数后还未成功时用clearinterval函数清空计时器. 代码和注释如下:(后端采用thinkPHP

Ajax轮询——“定时的通过Ajax查询服务端”

Ajax轮询——"定时的通过Ajax查询服务端". 概念: 轮询(polling):客户端按规定时间定时像服务端发送ajax请求,服务器接到请求后马上返回响应信息并关闭连接. 百闻不如一见,来段代码相信你一看就明白 //为了让同学们都明白,我用了最简单的实现方法,同学们懂了原理后可以自行衍生: Reception.html //前端代码 <html> <head> <title></title> <script src="

闲话ajax,例ajax轮询,ajax上传文件

引语:ajax这门技术早已见怪不怪了,我本人也只是就自己真实的经验去总结一些不足道的话.供不是特别了解的朋友参考参考! 本来早就想写一篇关于ajax的文章的,但是前段时间一直很忙,就搁置了,趁着元旦放假,赶紧补上吧! ajax的出现,可以出给用户带来了很好的体验,证据如下: 1.感觉:以前要给用户呈现新的内容,就必须要刷新当前页面,结果往往是这样:用户看着看着,唰...,然后又重头看起,我那个去,这谁受得了; 自从有了ajax后,就是这样的,用户关注哪一块,变化哪一块,我们就更新那一块,完全看不

javascript轮询请求服务器

抛出问题:web浏览器如何与服务保持通信? 方法一:Ajax轮询 方法二:EventSource轮询 方法三:websocket保持长连接 下面的解决方案是,Ajax轮询与EventSource轮询的合体. 客户端代码: <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> &

long poll、ajax轮询和WebSocket

websocket 的认识深刻有木有.所以转到我博客里,分享一下.比较喜欢看这种博客,读起来很轻松,不枯燥,没有布道师的阵仗,纯粹为分享.废话这么多了,最后再赞一个~ WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算) 1.1 和 keep-alive ,把多个HTTP请求合并为一个,但是 Websocket 其实是一个新协议,跟HTTP协议基本没有关系,只是为了兼容现有浏览器的握手规范而已,也就是说

ajax轮询session阻塞问题

近来读了几篇关于ASP.NET下Session机制的文章,结合自己的实际应用,有点感想: 在ASP.NET的Session的默认机制下,对同一个SessionID下的用户请求ASP.NET的Session数据的操作会引起排他锁,假设在同一个SessionID下有多个用户同时请求Session数据的话,就会出现很大的延迟现象.把Session的信息设置为ReadOnly,将不会在导致排他锁的出现.但是,只读Session'数据的操作还是要等待对Session的读写操作引起的排他锁的释放. 因此在不

【Javascript】解决Ajax轮询造成的线程阻塞问题(过渡方案)

一.背景 开发Web平台时,经常会需要定时向服务器轮询获取数据状态,并且通常不仅只开一个轮询,而是根据业务需要会产生数个轮询.这种情况下,性能低下的Ajax长轮询已经不能满足需求,频繁的访问还会造成线程阻塞.最优的解决方案当然是用Websocket,采用服务器推送的方式来减少频繁开关连接造成的开销.但是Websocket对于我来说还只是个新事物,在未完成论证的情况下不能直接开发完就上,因此只好采用过渡方案,使用队列的方式,暂时优化多AJax长轮询的情况下造成的线程阻塞问题. 我所用的Web平台框

COMET探索系列二【Ajax轮询复用模型】

COMET探索系列二[Ajax轮询复用模型] 写在前面:Ajax轮询相信大家都信手拈来在用,可是有这么一个问题,如果一个网站中同时有好多个地方需要用到这种轮询呢?就拿我们网站来说,有一个未读消息数提醒.还有一个时实时加载最新说说.昨天又加了一个全网喊话,以后还会要有类似功能添加是肯定的,难道要为每个功能都创建一个独立的轮询?要知道轮询请求中有大半是无用,会对服务器资源和宽带造成巨大的浪费.因此在页面中每增加一个轮询点,对服务器的压力及宽带浪费都将成倍的增长.再考虑一个情况,如果当前网页中需要的不

ajax轮询与长轮询

  刚刚网了关于轮询的知识,必须拿到自己这里来做个备份了! 其实以前用ajax轮询做个及时数据更新的,只是当时做了不知道那个就是轮询. 首先我们什么时候会想到用轮询技术呢? 一般而言,最多的是及时信息更新,比如一个商城活动,参与人数的实时更新等,也还有人用来做过聊天室的,但是哈,轮询技术问题还是很多的,频繁的请求的服务器,服务器会把IP给你列入非白名单里,让你无法请求服务器.所以做及时的我还是建议用websocket 建立长连接. 其次小杨用一位老师的原话来讲解一下ajax轮询技术: 一.Aja