论坛首页 Web前端技术论坛

请教Ajax 设置每隔1秒自动调用.但是只有第一次调用是成功的??为什么!

浏览 7153 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-09-21  
页面一 
名称 frameview.jsp

我想要实现的功能 发送请求到ajax.jsp 页面 获得返回值!
调用这个方法我想一秒钟调用一下,可是实际上我的只是在刚开始启动的时候,才能发送到ajax.jsp页面成功!
var newstimer=setInterval("diaoajax()",1000) ;//一秒调用一次!

---------------页面内容如下-------------

<%@ page contentType="text/html;charset=GBK" import="java.util.*" %>

<%
String imgpath  = request.getContextPath();
%>
<script type="text/javascript">
<!--
var xmlhttp;
     try{
       xmlhttp=new XMLHttpRequest();
     }catch(e){
       xmlhttp= new ActiveXObject("Microsoft.XMLHTTP");
     }
var newstimer=setInterval("diaoajax()",1000) ;

function diaoajax(){
    
      xmlhttp.onreadystatechange=function(){
      //alert('login');
        if(4==xmlhttp.readyState){
            if(200==xmlhttp.status){
            //去掉空格str
            var str = xmlhttp.responseText;
            var  reg = /\s/g;    
var  ss = str.replace(reg,"");
//alert(ss);                                               
                    if(ss=="no"){   
    document.getElementById("ylview").style.visibility="hidden";  
    return;
   }else{
    document.getElementById("ylview").style.visibility="visible";  
    return;
   }              
            }else{
            }
        }else{
        //alert(xmlhttp.readyState);
        }
     }
      xmlhttp.open("get","<%=imgpath%>/jsp/yusuan/tongji/ajax.jsp", true);
      xmlhttp.setRequestHeader('Content-type','application/x-www-form-urlencoded');
      xmlhttp.send(null);
      return ;
}

//-->
</script>
<style>
.divyl{
//visibility:hidden;
visibility:hidden;
}
</style>
<html>
<div class="divyl" id="ylview">
<table align="center">
<tr><td><img src="<%=imgpath %>/images/deng.jpg" alt="等待" /></td></tr>
</table>
</div>
</html>

二 ajax.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"%>
<%
String sessionStr = (String)request.getSession().getAttribute("flashtime");
System.out.println("css-----------------------csss");
if(sessionStr!=null){
response.getWriter().print("ok");
}else{
response.getWriter().print("no");
}
%>


//在我的后台只能打印css-----------------------csss一次,不是我想的一秒打印一次为什么,如何才能一秒发送成功请求一次!!
   发表时间:2007-09-21  
可能被浏览器缓存了,get请求时,当url不变的时候,会被浏览器缓存的,试试在url后面加一个随机数的参数
0 请登录后投票
   发表时间:2007-09-24  
jimichan 写道
可能被浏览器缓存了,get请求时,当url不变的时候,会被浏览器缓存的,试试在url后面加一个随机数的参数
楼上的说法正解
0 请登录后投票
   发表时间:2007-09-24  
url加个日期时间随机数
0 请登录后投票
   发表时间:2007-09-25  
另外,不要用全局xmlhttp对象,这样回调函数里得到的都是同一个XHR对象。因为实际情况下,由于网络原因不一定响应就在1秒内返回,这样就会产生冲突。另外,建议楼主用用prototype吧,你自己写有很多漏洞和不足的地方。
0 请登录后投票
   发表时间:2007-09-26  
如果考虑缓存因素,你可以用post代替get
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics