我是新手,最近在研究无刷新技术
在网上找了个例子,先建立一个网页文件sx.htm如下
<HTML>
<head>
<title>无刷新</title><script language="javascript">
function GetData()
{
url="a.aspx";//调用该页的数据处理
 var http = new ActiveXObject("Microsoft.XMLHTTP");//建立XMLHTTP对象
 http.open("GET",url,false);
//第一个参数的意思是,用"POST"方式发送数据.可以大到4MB,也可以换为"GET".只能256KB
//第2个参数的意思是数据发送到哪个文件处理
//第3个参数意思是同步或异步方式.TRUE为异步,FALSE为同步.在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。
 http.send();//开始发送数据.............嘟嘟..
 var str = http.responseText;
 loadcontent.innerHTML=str;
 setTimeout("GetData()",1000);
}
</script></head>
<BODY onload="javascript:GetData();">
<span id="loadcontent">数据载入中……</span>
</BODY>
</HTML>其中的a.aspx里我就调用了个小程序想显示一下时间,如下
Label1.Text = DateTime.Now.ToString();
然后用上面的无刷新技术来实现自动刷新时间并无闪烁
可是当我运行sx.htm的时候,它时间却停在那里不动,没有过一秒就变一次。
有哪位高手能帮我解决以下吗?谢拉~~~~~~~~~~~~~

解决方案 »

  1.   

    楼主不要急于求成,先看看原理再说吧。
    Label1.Text = DateTime.Now.ToString(); 
    明显的调用服务器端时间。服务器处理。
      

  2.   

    把setTimeout("GetData()",1000); 弄到GetData方法体外面去试
      

  3.   

    function GetData() 

    url="a.aspx";//调用该页的数据处理 
     var http = new ActiveXObject("Microsoft.XMLHTTP");//建立XMLHTTP对象 
     http.open("GET",url,false); 
    //第一个参数的意思是,用"POST"方式发送数据.可以大到4MB,也可以换为"GET".只能256KB 
    //第2个参数的意思是数据发送到哪个文件处理 
    //第3个参数意思是同步或异步方式.TRUE为异步,FALSE为同步.在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。  
     http.onreadystatechange = ShowData;
     http.send();//开始发送数据.............嘟嘟..  
     setTimeout("GetData()",1000); 
    }
    function ShowData(){
       if(http.readyState == 4){
          if(http.status == 200){
              var str = http.responseText; 
              loadcontent.innerHTML=str;
          }
       }
    }
    ================================================================原因:一个XMLHTTP请求会有四个过程的,也就是说你那个方法一秒会被刷至少四次~~~~~
      

  4.   


     readyStae状态的介绍:
     
       0 - (未初始化)还没有调用send()方法  1 - (载入)已调用send()方法,正在发送请求  2 - (载入完成)send()方法执行完成,已经接收到全部响应内容  3 - (交互)正在解析响应内容  4 - (完成)响应内容解析完成,可以在客户端调用了
      

  5.   

    function GetData() 

    url="a.aspx";//调用该页的数据处理 
     var http = new ActiveXObject("Microsoft.XMLHTTP");//建立XMLHTTP对象 
     http.open("GET",url,false); 
    //第一个参数的意思是,用"POST"方式发送数据.可以大到4MB,也可以换为"GET".只能256KB 
    //第2个参数的意思是数据发送到哪个文件处理 
    //第3个参数意思是同步或异步方式.TRUE为异步,FALSE为同步.在异步方式下,数据包一旦发送完毕,就结束Send进程,客户机执行其他的操作;而在同步方式下,客户机要等到服务器返回确认消息后才结束Send进程。 
     http.send();//开始发送数据.............嘟嘟.. 
     var str = http.responseText; 
     loadcontent.innerHTML=str; 
     setTimeout("GetData()",1000); 

    //======================
    LZ上面写的都成递归函数了(GetData()函数多次调用自己)
    首先:你得把 setTimeOut函数放在GetData函数外 ,比如说可以放在Body的onload事件中;
        onload="setTimeOut(GetData, 1000);"
    其次:
        Label1.Text = DateTime.Now.ToString(); 
        这句话返回值的应该是<span id="Label1" name="Label1"> **** </span> .
        ****部分是字符串的时间
    最后:
        loadcontent.innerHTML=str; 
        最好用 document.getElementByID('loadcontent').innerHTML = str;
      

  6.   

    我现在把代码放在.net中
    代码如下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml" >
    <head>
        <title>无标题页</title>
        <script type="text/javascript">
    function GetData()
    {
    url="Default.aspx";
     var http = new ActiveXObject("Microsoft.XMLHTTP");
     http.open("GET",url,false);
     http.send();
     var str = http.responseText;
     loadcontent.innerHTML=str;
     setTimeout("GetData()",1000);
    }
    </script>
    </head>
    <body onload="javascript:GetData()">
    <span id="loadcontent">数据载入中……</span>
    </body>
    </html>
    可是还是不行
    仍然不能刷新时间
    各位大虾能帮我再看看吗谢谢了