啊军_janson 2009-06-09 13:02
浏览 302
已采纳

请教利用ajax实现断网重连的功能

我有一个会不定时自动转换页面的web程序,我现在需要在每次自动转换前检查客户端是不是可以连通服务器,如果是连通了再转换页面,否则利用ajax自动重连,再我发现不会重新请求页面。请问是为什么呢?

[code="java"]

<!--
    var xmlhttp;
    // 创建一个XMLHTTPRequest对象
    function createXMLHTTPRequest(){
          if(window.ActiveXObject) {
               xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
        }
        else if(window.XMLHTTPRequest){
           xmlhttp = new XMLHTTPRequest();
        }
    }

    function proc(i){
        createXMLHTTPRequest();
        xmlhttp.open("get","http://localhost:8080/study/testAjax.jsp?param="+i,true);
        xmlhttp.onreadystatechange = doChange;
        xmlhttp.send("");
    }

    function doChange(){
        if(xmlhttp.readyState==4){
            if(xmlhttp.status!=200){
                alert("服务器错误,重新连接!");
                retry(5);
            }else{
                alert("服务器正确,进入一个新的页面!");
                retry(5);
            }
        }
    }


    var limit='0:5'  //定义刷新时间

    var parselimit=limit.split(":")
    parselimit=parselimit[0]*60+parselimit[1]*1

    function beginrefresh(){
    if (parselimit==1){
        proc(0);
    }else{ 
        parselimit-=1
        curmin=Math.floor(parselimit/60)
        cursec=parselimit%60
        if (curmin!=0)
            curtime=curmin+"分"+cursec+"秒后重刷本页!"
        else
            curtime=cursec+"秒后重刷本页!"
            window.status=curtime
            setTimeout("beginrefresh()",1000)
        }
    }

    var time = 1;
    function retry(retryTime){
        time = retryTime;
        var retry = false;

        if(retry){
            proc(1);
        }else{
            time -=1;
            if(time==1){
                alert("刷新页面");
                retry = true;
                proc(2);
            }else{
                setTimeout("retry("+time+")",1000);
            }
        }
    }

[/code]

我在testAjax.jsp这个页面中打印param只打印了param=0和param=2后就不再打印了,就算你并了tomcat也是这样,怎么会这样呢?请教了!

  • 写回答

1条回答 默认 最新

  • wanghaolovezlq 2009-06-09 13:18
    关注

    [code="java"]

    <!--
    
        // 创建一个XMLHTTPRequest对象
        function createXMLHTTPRequest(){
            var xmlhttp;
              if(window.ActiveXObject) {
                   xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
            }
            else if(window.XMLHTTPRequest){
               xmlhttp = new XMLHTTPRequest();
            }
    
            return xmlhttp;
        }
    
        function proc(i){
            var xmlhttp = createXMLHTTPRequest();
            xmlhttp.open("get","http://localhost:8080/study/testAjax.jsp?param="+i,true);
            xmlhttp.onreadystatechange = doChange;
            xmlhttp.send("");
        }
    
        function doChange(){
            if(xmlhttp.readyState==4){
                if(xmlhttp.status!=200){
                    alert("服务器错误,重新连接!");
                    retry(5);
                }else{
                    alert("服务器正确,进入一个新的页面!");
                    retry(5);
                }
            }
        }
    
    
        var limit='0:5'  //定义刷新时间
    
        var parselimit=limit.split(":")
        parselimit=parselimit[0]*60+parselimit[1]*1
    
        function beginrefresh(){
        if (parselimit==1){
            proc(0);
        }else{ 
            parselimit-=1
            curmin=Math.floor(parselimit/60)
            cursec=parselimit%60
            if (curmin!=0)
                curtime=curmin+"分"+cursec+"秒后重刷本页!"
            else
                curtime=cursec+"秒后重刷本页!"
                window.status=curtime
                setTimeout("beginrefresh()",1000)
            }
        }
    
        var time = 1;
        function retry(retryTime){
            time = retryTime;
            var retry = false;
    
            if(retry){
                proc(1);
            }else{
                time -=1;
                if(time==1){
                    alert("刷新页面");
                    retry = true;
                    proc(2);
                }else{
                    setTimeout("retry("+time+")",1000);
                }
            }
        }
    

    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 用matlab 设计一个不动点迭代法求解非线性方程组的代码
  • ¥15 牛顿斯科特系数表表示
  • ¥15 arduino 步进电机
  • ¥20 程序进入HardFault_Handler
  • ¥15 oracle集群安装出bug
  • ¥15 关于#python#的问题:自动化测试