啊军_janson 2009-06-09 14:35
浏览 439
已采纳

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

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


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);   
        }   
    }   
}   


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

1条回答 默认 最新

  • weixin_42297497 2009-06-09 15:03
    关注

    当然是不会自动得联呀,你可以在js里写个线程,然后再设个全局变量,state=0.每次ajax去访问时,如果超时或其实原因没有返回数据,就把state置成1.而让线程时时去扫state,如果发现等1就自动重联

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

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器