我是新手,最近在研究无刷新技术
在网上找了个例子,先建立一个网页文件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的时候,它时间却停在那里不动,没有过一秒就变一次。
有哪位高手能帮我解决以下吗?谢拉~~~~~~~~~~~~~
在网上找了个例子,先建立一个网页文件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的时候,它时间却停在那里不动,没有过一秒就变一次。
有哪位高手能帮我解决以下吗?谢拉~~~~~~~~~~~~~
Label1.Text = DateTime.Now.ToString();
明显的调用服务器端时间。服务器处理。
{
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请求会有四个过程的,也就是说你那个方法一秒会被刷至少四次~~~~~
readyStae状态的介绍:
0 - (未初始化)还没有调用send()方法 1 - (载入)已调用send()方法,正在发送请求 2 - (载入完成)send()方法执行完成,已经接收到全部响应内容 3 - (交互)正在解析响应内容 4 - (完成)响应内容解析完成,可以在客户端调用了
{
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;
代码如下:
<!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>
可是还是不行
仍然不能刷新时间
各位大虾能帮我再看看吗谢谢了