第一、我先给大家说一下我要实现的效果吧。下面是客户端的界面: 
开始:    属性  属性值    2秒钟后: 属性  属性值    再过2秒:属性  属性值    再过2秒: 属性  属性值 
          id      1                id      2                  id      3                  id      4 
          name    a                name    b                  name    c                  name    d      ... 
以上就是我想要实现的效果。 第二、客户端是用html+js做的,服务器端是用jsp做的。数据库是SqlServer。客户端通过xmlhttprequest发送定时请求,然后服务器端返回JSON格式的数据(如第一条中内容所示)。当前我的问题是:只能显示“开始”那样的效果(如第一条中所示),后面的效果根本显示不了。也就是说,现在不能实现刷新的效果,读了第一条就不往下走了。 第三、给大家看一下我的代码。 
服务器端:(连接数据库的代码省略) 
<% Statement stmt=conn.createStatement(); 
  ResultSet rs=stmt.executeQuery("select * from test " ); 
  
  StringBuffer result = new StringBuffer("{"); 
  
  if(rs.next()){ 
    
  id=rs.getString("id"); 
  name=rs.getString("name"); 
  
  result.append("'id':'" + id + "'" ); 
  result.append(",'name':'" + name+ "'"); 
  } 
  result.append("}"); 
  out.println(result.toString()); 
%> 
先谢谢各位了!

解决方案 »

  1.   

    把ajax的xmlthhp.open()贴出来
    估计是页面缓存的影响。加时间戳
    var url="zzz.jsp?zhang="+newDate().getTime();
    xmlthhp.open("GET",url,true)
      

  2.   

    这是我客户端的js代码: 
    <script type="text/javascript"> 
    var refreshTime = 1000 * 1;        
    var isRefreshing = false;          
    function getResult() 
    {if(isRefreshing) { 
            return; 
        } 
        isRefreshing = true;                                                      if (window.XMLHttpRequest) 
    { req = new XMLHttpRequest(); 
      }else if (window.ActiveXObject) 
            { req = new ActiveXObject("Microsoft.XMLHTTP");} if(req) 
    { req.open("GET","a1.jsp?timestamp=" + new Date().getTime(), true); 
      req.onreadystatechange = complete; 
      req.send(null); 
      } 
    } function complete() 
    {  if (req.readyState == 4) 
      {  isRefreshing = false;                      var jsonData = eval("(" + req.responseText + ")"); 
          for (var key in jsonData) { 
              if(document.getElementById(key)){  
              document.getElementById(key).innerHTML = jsonData[key]; 
            }      
          } 
        } 
    } function init() { 
        getResult(); 
        setInterval("getResult()",refreshTime); 

    </script> 
    <body onLoad="init()"> 
    ...... 
    希望大家给我修改后的完整代码,我是一个初学者,谢谢各位了。
      

  3.   

    你查询所有的记录,扔到前台,这样也不是不可以,但是json设置多个ID,NAME属性,肯定有值被覆盖掉了
      

  4.   

    function complete(){
      isRefreshing = false;
      if (req.readyState == 4){    
        if (req.status==200){//加这个试试呢
          var jsonData = eval("(" + req.responseText + ")");
          for (var key in jsonData) {
            if(document.getElementById(key)){ 
              document.getElementById(key).innerHTML = jsonData[key];
            }     
          }
        }
      }
    }
      

  5.   

    这是我的客户端主要代码:
     
    <script type="text/javascript"> 
    var refreshTime = 1000 * 1;        
    var isRefreshing = false;          
    function getResult() 
    {if(isRefreshing) { 
            return; 
        } 
        isRefreshing = true;                                                      if (window.XMLHttpRequest) 
    { req = new XMLHttpRequest(); 
      }else if (window.ActiveXObject) 
            { req = new ActiveXObject("Microsoft.XMLHTTP");} if(req) 
    { req.open("GET","a1.jsp?timestamp=" + new Date().getTime(), true); 
      req.onreadystatechange = complete; 
      req.send(null); 
      } 
    } function complete() 
    {  if (req.readyState == 4) 
      {  isRefreshing = false;                      var jsonData = eval("(" + req.responseText + ")"); 
          for (var key in jsonData) { 
              if(document.getElementById(key)){  
              document.getElementById(key).innerHTML = jsonData[key]; 
            }      
          } 
        } 
    } function init() { 
        getResult(); 
        setInterval("getResult()",refreshTime); 

    </script> 
    <body onLoad="init()"> 
    ......