XMLHTTP无刷新自动实时更新数据

2016-02-19 18:37 13 1 收藏

下面图老师小编要向大家介绍下XMLHTTP无刷新自动实时更新数据,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - Web开发 】

  传统上,我们浏览网页,如果加入最新的数据。只能是等我们重新向服务器端请求时才能显示出来。但是,对于一些时效性很强的网站,传统的这种做法是不能满足的。

 
  我们可以让程序自动刷新,定时向服务器请求数据。5秒取一次数据,10秒取一次数据。利用XMLHTTP发出请求并取得数据。传到客户端,客户端重新组织并显示数据。

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

  demo.htm 前台显示.

script language="JavaScript"function GetResult(){/**--------------- GetResult() -----------------* GetResult() * 功能:通过XMLHTTP发送请求,返回结果.* 参数:str,字符串,发送条件.* 实例:GetResult();*--------------- GetResult() -----------------*/var oBao = new ActiveXObject("Microsoft.XMLHTTP");//特殊字符:+,%,&,=,?等的传输解决办法.字符串先用escape编码的.//Update:2004-6-1 12:22oBao.open("POST","Server.asp",false);oBao.send();//服务器端处理返回的是经过escape编码的字符串.var strResult = unescape(oBao.responseText);//将字符串分开.var arrResult = strResult.split("###");RemoveRow(); //删除以前的数据.//将取得的字符串分开,并写入表格中.for(var i=0;iarrResult.length;i++){arrTmp = arrResult[i].split("@@@");num1 = arrTmp[0]; //字段num1的值num2 = arrTmp[1]; //字段num2的值row1 = tb.insertRow();cell1 = row1.insertCell();cell1.innerText = num1;cell2 = row1.insertCell();cell2.innerText = num2;}}function RemoveRow(){//保留第一行表头,其余数据均删除.var iRows = tb.rows.length;for(var i=0;iiRows-1;i++){tb.deleteRow(1);}}function MyShow(){//2秒自动刷新一次,2秒取得一次数据.timer = window.setInterval("GetResult()",2000);}/scriptbody onload="MyShow()"p/ptable width="47%" height="23" border="0" cellpadding="1" cellspacing="0"id="tb"trtdnum1/tdtdnum2/td/tr/table
  Server.asp 后台读取数据

% @Language="JavaScript" %%function OpenDB(sdbname){/**--------------- OpenDB(sdbname) -----------------* OpenDB(sdbname) * 功能:打开数据库sdbname,返回conn对象.* 参数:sdbname,字符串,数据库名称.* 实例:var conn = OpenDB("database.mdb");*--------------- OpenDB(sdbname) -----------------*/var connstr = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source="+Server.MapPath(sdbname);var conn = Server.CreateObject("ADODB.Connection");conn.Open(connstr);return conn;}var sResult = new Array();var oConn = OpenDB("data.mdb");//特殊字符:+,%,&,=,?等的传输解决办法.客户端字符是经过escape编码的//所以服务器端先要经过unescape解码.//Update:2004-6-1 12:22var sql = "select num1,num2 from nums order by id";var rs = oConn.Execute(sql);while(!rs.EOF){//一条记录用"###"隔开.每列数据用"@@@"隔开. 这是以只有两个列数据的情况.sResult[sResult.length] = rs("num1").Value + "@@@" + rs("num2").Valuers.MoveNext();}//escape解决了XMLHTTP。中文处理的问题.Response.Write(escape(sResult.join("###")));%
数据库data.mdb

表 nums

id,自动编号

num1,文本

num2,文本

测试数据

id num1 num2

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/webkaifa/)

1 20.70 20.810

2 10.5 20.5

3 12.3 300

4 132 323

5 563 56

6 20 10

来源:https://www.tulaoshi.com/n/20160219/1618344.html

延伸阅读
标签: Web开发
以下正文:  程序设计中会经常碰到一种情况,就是事先无法得知用户会需要哪些数据,必须根据用户选择后再从服务 器重新提取数据后反馈给用户。比如一简单的情况,用户选择省份以后,我们立即会在市里边将这个省的 所有市重新显示出来。这种情况一般需要将整个页面刷新后才可以重新读取,但这样不仅效率不高外,也 显得不太优雅。其实...
标签: Web开发
Ajax内部交流文档一、使用Ajax的主要原因  1、通过适当的Ajax应用达到更好的用户体验;  2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。     二、引用  Ajax这个概念的最早提出者Jesse&...
标签: Web开发
Ajax内部交流文档一、使用Ajax的主要原因 1、通过适当的Ajax应用达到更好的用户体验; 2、把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。 二、引用 Ajax这个概念的最早提出者Jesse James Garrett认为: Ajax是A...
标签: Web开发
在页面上使用ActiveXObject的代价是很大的,如果我们的无刷新页面使用xmlhttp技术,我们或许需要频繁的建立xmlhttp对象,当然我们也可以使用全局变量来cache一个xmlhttp对象实例。但是这样的方法适合于同步方式xmlhttp通信,而对于异步方式xmlhttp通信将会出现问题。由于没有了进程的堵塞,用户可能再次调用同一个xmlhttp实例,如果这时前一个通...
标签: ASP
  刷新技术经历了大致几个阶段: 一、在HTML文件头里增加一个键,使该页面在设定的时间后跳转到指定的页面(包括自身); 例如: <meta http-equiv="refresh" content="30" 二、使用框架然后在JS脚本里定时刷新框架内容。 上面两种方式都会重新加载页面,即刷新,给人的感觉不是很好!于是无刷新技术出现了。 三、是对第二种方式的一...

经验教程

264

收藏

39
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部