现在我问题有这么几个:
需要找一段程序,模拟设备采集数据信号,不断向数据库传送,我用的是MSSQL。
另外,一端的IE浏览器显示出数据的变化效果,我只要求实现示例的效果。
现在我的数据显示,还是采用 定时刷新
听说有iframe隐藏桢 java Applet之类的方法可以实现,奈何我比较着急,而且这些都没用过,
能提供帮助者,希望不吝赐教,参与就有分,大家帮我顶阿。
主要代码如下:
<SCRIPT LANGUAGE="VBScript">
<!--
dim index
dim recordCount
dim dataValue
<%
dim i,j
Set Conn = Server.CreateObject("ADODB.Connection")
Set RS = Server.CreateObject("ADODB.RecordSet")
Conn.Open "driver={SQL Server};server=M****L;UID=sa;PWD=0****0;Database=s*****l"
RS.Open "select top 100 * from s* order by Col001 desc", Conn, 1,1
response.write "recordCount=" & rs.recordcount & vbcrlf
response.write "redim dataValue(99)" & vbcrlf
i=0
while not rs.eof
response.write "dataValue(" & i & ")=" & rs(1) & vbcrlf
i=i+1
rs.movenext
wend
rs.close
Conn.Close
%>
Sub Window_onload()
TChart1.Environment.IEPrintWithPage=True
TChart1.AddSeries(6)
set s=TChart1.Series(0)
s.FillSampleValues(10)
s.Title="Stock 1"
TChart1.Header.Text.Add("**")
TChart1.Header.Font.Bold=True
TChart1.Header.Font.Color=vbBlack
TChart1.Header.Font.Size=12
TChart1.Legend.Visible=False
TChart1.Walls.Left.Size=10
TChart1.Walls.Bottom.Size=10
TChart1.Zoom.Animated=false
TChart1.Aspect.View3D=false
TChart1.TimerEnabled=false
TChart1.TimerInterval=100
index=0
s=TChart1.Series(0).Clear
set s=TChart1.Series(0)
s.Clear
s.AddXY 1, dataValue(0), "", 536870912
For i = 1 To 99
s.AddXY s.XValues.Last + 1, dataValue(i), "",536870912
Next
end sub
sub TChart1_OnTimer()
index=index+1
if index>recordCount then
index=1
end if
for t=0 to TChart1.SeriesCount -1
set s=TChart1.Series(t)
s.Delete(0)
if index=1 then
s.AddXY s.XValues.Last, dataValue(index), "", 536870912
else
s.AddXY s.XValues.Last + 1, dataValue(index), "", 536870912
end if
next
end sub
-->
</SCRIPT>
<html>
<head><LINK REL=STYLESHEET TYPE="text/css" HREF="style.css"><meta http-equiv="refresh" content="2">
<style type="text/css">
<!--
.style1 {font-size: 24px}
-->
</style>
</head>
<BODY bgcolor=#FFFFFF>
<div align="center" class="style1">********************
</div>
<p>
</p>
<hr>
<p align="center">
<input type="checkbox" checked onclick="TChart1.Aspect.View3D= not TChart1.Aspect.View3D" name="View3">
3D效果
<input type="checkbox" checked onclick="TChart1.TimerEnabled= not TChart1.TimerEnabled" name="Anim">
动画
<input type="button" value="图表编辑..." onclick="TChart1.ShowEditor" name="ShowEd">
</p>
<p align=center>
<object id="TChart1" width=922 height=461
codebase="http://*.*.*.245/cab/TeeChart5.cab#version=5,0,4,0"
classid="CLSID:B6C10489-FB89-11D4-93C9-006008A7EED4">
<embed width="922" height="461"></embed>
</object>
</p>
</BODY>
</html>
隐藏桢弄了一下感觉意义不大。还要大家帮忙啊,分数去下面领。
http://community.csdn.net/Expert/TopicView3.asp?id=4055465 68分
http://community.csdn.net/Expert/TopicView3.asp?id=4059550 100分
http://community.csdn.net/Expert/TopicView3.asp?id=4058917 100分
xml我是一点基础也没有,大家如果热心最好给出完整的代码。分数不够您说话。
17 个解决方案
#1
http://www.womenwatch-china.org/upload/mbook.rar
#2
<SCRIPT LANGUAGE="JavaScript">
function getData()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
// 异步调用
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4) // 调用完毕
{
if (xmlhttp.status == 200) // 加载成功
{
var xmldoc = xmlhttp.responseXML;
var root = xmldoc.documentElement;
alert (xmldoc.xml);
}
}
}
var url = 'xml.asp';
xmlhttp.open("get", url, true);
xmlhttp.send();
}
</SCRIPT>
<BODY>
异步调用 xmlhttp 取后台数据
<input type="button" value="GetData" onclick="getData()">
<%
dim i, xml
xml = "<?xml version='1.0' encoding='gb2312' ?>"
xml = xml & "<data>"
for i = 1 to 50
xml = xml & "<record>记录" & i & "</record>"
next
xml = xml & "</data>"
response.ContentType = "text/xml"
response.write xml
%>
function getData()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
// 异步调用
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4) // 调用完毕
{
if (xmlhttp.status == 200) // 加载成功
{
var xmldoc = xmlhttp.responseXML;
var root = xmldoc.documentElement;
alert (xmldoc.xml);
}
}
}
var url = 'xml.asp';
xmlhttp.open("get", url, true);
xmlhttp.send();
}
</SCRIPT>
<BODY>
异步调用 xmlhttp 取后台数据
<input type="button" value="GetData" onclick="getData()">
<%
dim i, xml
xml = "<?xml version='1.0' encoding='gb2312' ?>"
xml = xml & "<data>"
for i = 1 to 50
xml = xml & "<record>记录" & i & "</record>"
next
xml = xml & "</data>"
response.ContentType = "text/xml"
response.write xml
%>
#3
楼上的什么意思
我能用的上么。
我能用的上么。
#4
2楼正解,或者你去搜索无刷频聊天室看看
听说有iframe隐藏桢 java Applet之类的方法可以实现,奈何我比较着急,而且这些都没用过,
呵呵,iframe隐藏桢 html中写xmlhttp就可以了,
你看看动网也是这么做的啊,
点击首页的+(栏目)
听说有iframe隐藏桢 java Applet之类的方法可以实现,奈何我比较着急,而且这些都没用过,
呵呵,iframe隐藏桢 html中写xmlhttp就可以了,
你看看动网也是这么做的啊,
点击首页的+(栏目)
#5
狼怎么反复都是这个代码啊?
#6
我没用过xml,看不懂这段程序有什么用处,谁能解决一下。
#7
前些时间写了几篇关于XMLHTTP运用的实例.
(可以到http://dev.csdn.net/user/wanghr100看之前的几编关于XMLHTTP的介绍.)
近来看论坛上经常有人提问关于如何无刷新,自动更新数据.
传统上,我们浏览网页,如果加入最新的数据.只能是等我们重新向服务器端请求时才能显示出来.
但是,对于一些时效性很强的网站.传统的这种做法是不能满足的.
我们可以让程序自动刷新.定时向服务器请求数据.5秒取一次数据,10秒取一次数据.
利用XMLHTTP发出请求并取得数据.传到客户端,客户端重新组织并显示数据.
demo.htm 前台显示.
<script language="JavaScript">
function GetResult()
{
/*
*--------------- GetResult() -----------------
* GetResult()
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult();
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- GetResult() -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
//特殊字符:+,%,&,=,?等的传输解决办法.字符串先用escape编码的.
//Update:2004-6-1 12:22
oBao.open("POST","Server.asp",false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
var strResult = unescape(oBao.responseText);
//将字符串分开.
var arrResult = strResult.split("###");
RemoveRow(); //删除以前的数据.
//将取得的字符串分开,并写入表格中.
for(var i=0;i<arrResult.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;i<iRows-1;i++)
{
tb.deleteRow(1);
}
}
function MyShow()
{
//2秒自动刷新一次,2秒取得一次数据.
timer = window.setInterval("GetResult()",2000);
}
</script>
<body onload="MyShow()">
<p>
</p>
<table width="47%" height="23" border="0" cellpadding="1" cellspacing="0" id="tb">
<tr>
<td>num1</td>
<td>num2</td>
</tr>
</table>
Server.asp 后台读取数据
<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB("database.mdb");
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-12 8:18
*--------------- 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:22
var 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").Value
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
Response.Write(escape(sResult.join("###")));
%>
数据库data.mdb
表 nums
id,自动编号
num1,文本
num2,文本
测试数据
id num1 num2
1 20.70 20.810
2 10.5 20.5
3 12.3 300
4 132 323
5 563 56
6 20 10
(可以到http://dev.csdn.net/user/wanghr100看之前的几编关于XMLHTTP的介绍.)
近来看论坛上经常有人提问关于如何无刷新,自动更新数据.
传统上,我们浏览网页,如果加入最新的数据.只能是等我们重新向服务器端请求时才能显示出来.
但是,对于一些时效性很强的网站.传统的这种做法是不能满足的.
我们可以让程序自动刷新.定时向服务器请求数据.5秒取一次数据,10秒取一次数据.
利用XMLHTTP发出请求并取得数据.传到客户端,客户端重新组织并显示数据.
demo.htm 前台显示.
<script language="JavaScript">
function GetResult()
{
/*
*--------------- GetResult() -----------------
* GetResult()
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult();
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- GetResult() -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
//特殊字符:+,%,&,=,?等的传输解决办法.字符串先用escape编码的.
//Update:2004-6-1 12:22
oBao.open("POST","Server.asp",false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
var strResult = unescape(oBao.responseText);
//将字符串分开.
var arrResult = strResult.split("###");
RemoveRow(); //删除以前的数据.
//将取得的字符串分开,并写入表格中.
for(var i=0;i<arrResult.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;i<iRows-1;i++)
{
tb.deleteRow(1);
}
}
function MyShow()
{
//2秒自动刷新一次,2秒取得一次数据.
timer = window.setInterval("GetResult()",2000);
}
</script>
<body onload="MyShow()">
<p>
</p>
<table width="47%" height="23" border="0" cellpadding="1" cellspacing="0" id="tb">
<tr>
<td>num1</td>
<td>num2</td>
</tr>
</table>
Server.asp 后台读取数据
<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB("database.mdb");
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-12 8:18
*--------------- 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:22
var 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").Value
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
Response.Write(escape(sResult.join("###")));
%>
数据库data.mdb
表 nums
id,自动编号
num1,文本
num2,文本
测试数据
id num1 num2
1 20.70 20.810
2 10.5 20.5
3 12.3 300
4 132 323
5 563 56
6 20 10
#8
如果仅仅是把数据从数据库中拿出来确实可以实现。
但是数据是从数据库中传到控件里,该怎么办。
但是数据是从数据库中传到控件里,该怎么办。
#9
可以这样处理,前台显示从服务器读取数据之后输入到一个数组中,可以先设定取得的数据为最新的100个数据,这样数组也设定为100,然后再刷新dataValue,控件读取的数据就为最新的图像
,可是我不会编谁能帮我一把。
短时间内编程不会有进步,还是写不出来,怎么办。
,可是我不会编谁能帮我一把。
短时间内编程不会有进步,还是写不出来,怎么办。
#10
看来还得还得自己来
#11
关注~!
VBS如何调用Teechart控件?
VBS如何调用Teechart控件?
#12
灰豆的这段代码我试验了
demo.htm在服务器上有效,在别的机器上用就无效,为什么呢。
demo.htm在服务器上有效,在别的机器上用就无效,为什么呢。
#13
学习。。。
#14
总结一天来学习无刷新
我N年前的一篇文章,你百度搜一下。
问题应该能解决
我N年前的一篇文章,你百度搜一下。
问题应该能解决
#15
提供一下我写的一个例子吧:
随意测试写的
<!--#include file="array.asp"-->
<SCRIPT language=javascript>
<!--
function bar(){
var oXMLDoc = new ActiveXObject('MSXML'); //创建'MSXML'对象
sURL = "d.asp" //获取登陆状态数据的地址
oXMLDoc.url = sURL; //load数据
var oRoot=oXMLDoc.root; //获取返回xml数据的根节点
if(oRoot.children != null)
{
//根据返回的数据在客户端显示
yy.innerHTML=oRoot.children.item(0).text; //用户
img.innerHTML=oRoot.children.item(1).text; //时间
a.innerHTML=oRoot.children.item(2).text;
}
var timeoutid = setTimeout("bar()",2000)
} //每1.5秒重获一次数据,}
//-->
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
return eval(jsStr)
}
//-->
</script>
<iframe Id=ActFrm style='width:0;height:0;visibility:hidden'></iframe>
<script language='javascript'>
function k(items){
var x=window.event.x;
var y=window.event.y;
ActFrm.document.location="c.asp?x="+x+"&y="+y;
}
</script>
</html>
<body onLoad="bar()" onclick="k()">请点击屏幕:
<span id=yy></span><span id=img></span><br><span id=a></span>
<%
x=Request.QueryString("x")
y=Request.QueryString("y")
Set Rs=Server.CreateObject("ADODB.RecordSet")
Sql = "update xy set x="&x&",y="&y&" Where id=1"
Rs.Open Sql,conn,1,3
Rs.AddNew
Rs("x")=x
Rs("y")=y
Rs.Update
%>
随意测试写的
<!--#include file="array.asp"-->
<SCRIPT language=javascript>
<!--
function bar(){
var oXMLDoc = new ActiveXObject('MSXML'); //创建'MSXML'对象
sURL = "d.asp" //获取登陆状态数据的地址
oXMLDoc.url = sURL; //load数据
var oRoot=oXMLDoc.root; //获取返回xml数据的根节点
if(oRoot.children != null)
{
//根据返回的数据在客户端显示
yy.innerHTML=oRoot.children.item(0).text; //用户
img.innerHTML=oRoot.children.item(1).text; //时间
a.innerHTML=oRoot.children.item(2).text;
}
var timeoutid = setTimeout("bar()",2000)
} //每1.5秒重获一次数据,}
//-->
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
return eval(jsStr)
}
//-->
</script>
<iframe Id=ActFrm style='width:0;height:0;visibility:hidden'></iframe>
<script language='javascript'>
function k(items){
var x=window.event.x;
var y=window.event.y;
ActFrm.document.location="c.asp?x="+x+"&y="+y;
}
</script>
</html>
<body onLoad="bar()" onclick="k()">请点击屏幕:
<span id=yy></span><span id=img></span><br><span id=a></span>
<%
x=Request.QueryString("x")
y=Request.QueryString("y")
Set Rs=Server.CreateObject("ADODB.RecordSet")
Sql = "update xy set x="&x&",y="&y&" Where id=1"
Rs.Open Sql,conn,1,3
Rs.AddNew
Rs("x")=x
Rs("y")=y
Rs.Update
%>
#16
d.asp
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
%>
<%
DBPath="xy.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
rs="DBQ="&server.mappath(dbpath)&";DRIVER={Microsoft Access Driver (*.mdb)};"
conn.Open rs
set rs=server.createobject("adodb.recordset")
rs.open "Select * From xy where id=1",conn,3,3
do while not rs.eof
%>
<?xml version="1.0" encoding="gb2312" ?>
<plan>
<yy><%=application("show6")%></yy>
<img><%=Rs("x")%>,<%=Rs("y")%></img>
<a><img src="1.jpg" width="<%=Rs("x")%>",height="<%=Rs("y")%>"></a>
</plan>
<%rs.movenext%>
<%loop%>
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
%>
<%
DBPath="xy.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
rs="DBQ="&server.mappath(dbpath)&";DRIVER={Microsoft Access Driver (*.mdb)};"
conn.Open rs
set rs=server.createobject("adodb.recordset")
rs.open "Select * From xy where id=1",conn,3,3
do while not rs.eof
%>
<?xml version="1.0" encoding="gb2312" ?>
<plan>
<yy><%=application("show6")%></yy>
<img><%=Rs("x")%>,<%=Rs("y")%></img>
<a><img src="1.jpg" width="<%=Rs("x")%>",height="<%=Rs("y")%>"></a>
</plan>
<%rs.movenext%>
<%loop%>
#17
http://bbs.nuc.edu.cn/pc/pccon.php?id=15&nid=81&order=&tid=17
#1
http://www.womenwatch-china.org/upload/mbook.rar
#2
<SCRIPT LANGUAGE="JavaScript">
function getData()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
// 异步调用
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4) // 调用完毕
{
if (xmlhttp.status == 200) // 加载成功
{
var xmldoc = xmlhttp.responseXML;
var root = xmldoc.documentElement;
alert (xmldoc.xml);
}
}
}
var url = 'xml.asp';
xmlhttp.open("get", url, true);
xmlhttp.send();
}
</SCRIPT>
<BODY>
异步调用 xmlhttp 取后台数据
<input type="button" value="GetData" onclick="getData()">
<%
dim i, xml
xml = "<?xml version='1.0' encoding='gb2312' ?>"
xml = xml & "<data>"
for i = 1 to 50
xml = xml & "<record>记录" & i & "</record>"
next
xml = xml & "</data>"
response.ContentType = "text/xml"
response.write xml
%>
function getData()
{
var xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
// 异步调用
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4) // 调用完毕
{
if (xmlhttp.status == 200) // 加载成功
{
var xmldoc = xmlhttp.responseXML;
var root = xmldoc.documentElement;
alert (xmldoc.xml);
}
}
}
var url = 'xml.asp';
xmlhttp.open("get", url, true);
xmlhttp.send();
}
</SCRIPT>
<BODY>
异步调用 xmlhttp 取后台数据
<input type="button" value="GetData" onclick="getData()">
<%
dim i, xml
xml = "<?xml version='1.0' encoding='gb2312' ?>"
xml = xml & "<data>"
for i = 1 to 50
xml = xml & "<record>记录" & i & "</record>"
next
xml = xml & "</data>"
response.ContentType = "text/xml"
response.write xml
%>
#3
楼上的什么意思
我能用的上么。
我能用的上么。
#4
2楼正解,或者你去搜索无刷频聊天室看看
听说有iframe隐藏桢 java Applet之类的方法可以实现,奈何我比较着急,而且这些都没用过,
呵呵,iframe隐藏桢 html中写xmlhttp就可以了,
你看看动网也是这么做的啊,
点击首页的+(栏目)
听说有iframe隐藏桢 java Applet之类的方法可以实现,奈何我比较着急,而且这些都没用过,
呵呵,iframe隐藏桢 html中写xmlhttp就可以了,
你看看动网也是这么做的啊,
点击首页的+(栏目)
#5
狼怎么反复都是这个代码啊?
#6
我没用过xml,看不懂这段程序有什么用处,谁能解决一下。
#7
前些时间写了几篇关于XMLHTTP运用的实例.
(可以到http://dev.csdn.net/user/wanghr100看之前的几编关于XMLHTTP的介绍.)
近来看论坛上经常有人提问关于如何无刷新,自动更新数据.
传统上,我们浏览网页,如果加入最新的数据.只能是等我们重新向服务器端请求时才能显示出来.
但是,对于一些时效性很强的网站.传统的这种做法是不能满足的.
我们可以让程序自动刷新.定时向服务器请求数据.5秒取一次数据,10秒取一次数据.
利用XMLHTTP发出请求并取得数据.传到客户端,客户端重新组织并显示数据.
demo.htm 前台显示.
<script language="JavaScript">
function GetResult()
{
/*
*--------------- GetResult() -----------------
* GetResult()
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult();
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- GetResult() -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
//特殊字符:+,%,&,=,?等的传输解决办法.字符串先用escape编码的.
//Update:2004-6-1 12:22
oBao.open("POST","Server.asp",false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
var strResult = unescape(oBao.responseText);
//将字符串分开.
var arrResult = strResult.split("###");
RemoveRow(); //删除以前的数据.
//将取得的字符串分开,并写入表格中.
for(var i=0;i<arrResult.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;i<iRows-1;i++)
{
tb.deleteRow(1);
}
}
function MyShow()
{
//2秒自动刷新一次,2秒取得一次数据.
timer = window.setInterval("GetResult()",2000);
}
</script>
<body onload="MyShow()">
<p>
</p>
<table width="47%" height="23" border="0" cellpadding="1" cellspacing="0" id="tb">
<tr>
<td>num1</td>
<td>num2</td>
</tr>
</table>
Server.asp 后台读取数据
<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB("database.mdb");
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-12 8:18
*--------------- 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:22
var 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").Value
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
Response.Write(escape(sResult.join("###")));
%>
数据库data.mdb
表 nums
id,自动编号
num1,文本
num2,文本
测试数据
id num1 num2
1 20.70 20.810
2 10.5 20.5
3 12.3 300
4 132 323
5 563 56
6 20 10
(可以到http://dev.csdn.net/user/wanghr100看之前的几编关于XMLHTTP的介绍.)
近来看论坛上经常有人提问关于如何无刷新,自动更新数据.
传统上,我们浏览网页,如果加入最新的数据.只能是等我们重新向服务器端请求时才能显示出来.
但是,对于一些时效性很强的网站.传统的这种做法是不能满足的.
我们可以让程序自动刷新.定时向服务器请求数据.5秒取一次数据,10秒取一次数据.
利用XMLHTTP发出请求并取得数据.传到客户端,客户端重新组织并显示数据.
demo.htm 前台显示.
<script language="JavaScript">
function GetResult()
{
/*
*--------------- GetResult() -----------------
* GetResult()
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件.
* 实例:GetResult();
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-27 19:02
*--------------- GetResult() -----------------
*/
var oBao = new ActiveXObject("Microsoft.XMLHTTP");
//特殊字符:+,%,&,=,?等的传输解决办法.字符串先用escape编码的.
//Update:2004-6-1 12:22
oBao.open("POST","Server.asp",false);
oBao.send();
//服务器端处理返回的是经过escape编码的字符串.
var strResult = unescape(oBao.responseText);
//将字符串分开.
var arrResult = strResult.split("###");
RemoveRow(); //删除以前的数据.
//将取得的字符串分开,并写入表格中.
for(var i=0;i<arrResult.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;i<iRows-1;i++)
{
tb.deleteRow(1);
}
}
function MyShow()
{
//2秒自动刷新一次,2秒取得一次数据.
timer = window.setInterval("GetResult()",2000);
}
</script>
<body onload="MyShow()">
<p>
</p>
<table width="47%" height="23" border="0" cellpadding="1" cellspacing="0" id="tb">
<tr>
<td>num1</td>
<td>num2</td>
</tr>
</table>
Server.asp 后台读取数据
<% @Language="JavaScript" %>
<%
function OpenDB(sdbname)
{
/*
*--------------- OpenDB(sdbname) -----------------
* OpenDB(sdbname)
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB("database.mdb");
* author:wanghr100(灰豆宝宝.net)
* update:2004-5-12 8:18
*--------------- 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:22
var 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").Value
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
Response.Write(escape(sResult.join("###")));
%>
数据库data.mdb
表 nums
id,自动编号
num1,文本
num2,文本
测试数据
id num1 num2
1 20.70 20.810
2 10.5 20.5
3 12.3 300
4 132 323
5 563 56
6 20 10
#8
如果仅仅是把数据从数据库中拿出来确实可以实现。
但是数据是从数据库中传到控件里,该怎么办。
但是数据是从数据库中传到控件里,该怎么办。
#9
可以这样处理,前台显示从服务器读取数据之后输入到一个数组中,可以先设定取得的数据为最新的100个数据,这样数组也设定为100,然后再刷新dataValue,控件读取的数据就为最新的图像
,可是我不会编谁能帮我一把。
短时间内编程不会有进步,还是写不出来,怎么办。
,可是我不会编谁能帮我一把。
短时间内编程不会有进步,还是写不出来,怎么办。
#10
看来还得还得自己来
#11
关注~!
VBS如何调用Teechart控件?
VBS如何调用Teechart控件?
#12
灰豆的这段代码我试验了
demo.htm在服务器上有效,在别的机器上用就无效,为什么呢。
demo.htm在服务器上有效,在别的机器上用就无效,为什么呢。
#13
学习。。。
#14
总结一天来学习无刷新
我N年前的一篇文章,你百度搜一下。
问题应该能解决
我N年前的一篇文章,你百度搜一下。
问题应该能解决
#15
提供一下我写的一个例子吧:
随意测试写的
<!--#include file="array.asp"-->
<SCRIPT language=javascript>
<!--
function bar(){
var oXMLDoc = new ActiveXObject('MSXML'); //创建'MSXML'对象
sURL = "d.asp" //获取登陆状态数据的地址
oXMLDoc.url = sURL; //load数据
var oRoot=oXMLDoc.root; //获取返回xml数据的根节点
if(oRoot.children != null)
{
//根据返回的数据在客户端显示
yy.innerHTML=oRoot.children.item(0).text; //用户
img.innerHTML=oRoot.children.item(1).text; //时间
a.innerHTML=oRoot.children.item(2).text;
}
var timeoutid = setTimeout("bar()",2000)
} //每1.5秒重获一次数据,}
//-->
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
return eval(jsStr)
}
//-->
</script>
<iframe Id=ActFrm style='width:0;height:0;visibility:hidden'></iframe>
<script language='javascript'>
function k(items){
var x=window.event.x;
var y=window.event.y;
ActFrm.document.location="c.asp?x="+x+"&y="+y;
}
</script>
</html>
<body onLoad="bar()" onclick="k()">请点击屏幕:
<span id=yy></span><span id=img></span><br><span id=a></span>
<%
x=Request.QueryString("x")
y=Request.QueryString("y")
Set Rs=Server.CreateObject("ADODB.RecordSet")
Sql = "update xy set x="&x&",y="&y&" Where id=1"
Rs.Open Sql,conn,1,3
Rs.AddNew
Rs("x")=x
Rs("y")=y
Rs.Update
%>
随意测试写的
<!--#include file="array.asp"-->
<SCRIPT language=javascript>
<!--
function bar(){
var oXMLDoc = new ActiveXObject('MSXML'); //创建'MSXML'对象
sURL = "d.asp" //获取登陆状态数据的地址
oXMLDoc.url = sURL; //load数据
var oRoot=oXMLDoc.root; //获取返回xml数据的根节点
if(oRoot.children != null)
{
//根据返回的数据在客户端显示
yy.innerHTML=oRoot.children.item(0).text; //用户
img.innerHTML=oRoot.children.item(1).text; //时间
a.innerHTML=oRoot.children.item(2).text;
}
var timeoutid = setTimeout("bar()",2000)
} //每1.5秒重获一次数据,}
//-->
</SCRIPT>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_callJS(jsStr) { //v2.0
return eval(jsStr)
}
//-->
</script>
<iframe Id=ActFrm style='width:0;height:0;visibility:hidden'></iframe>
<script language='javascript'>
function k(items){
var x=window.event.x;
var y=window.event.y;
ActFrm.document.location="c.asp?x="+x+"&y="+y;
}
</script>
</html>
<body onLoad="bar()" onclick="k()">请点击屏幕:
<span id=yy></span><span id=img></span><br><span id=a></span>
<%
x=Request.QueryString("x")
y=Request.QueryString("y")
Set Rs=Server.CreateObject("ADODB.RecordSet")
Sql = "update xy set x="&x&",y="&y&" Where id=1"
Rs.Open Sql,conn,1,3
Rs.AddNew
Rs("x")=x
Rs("y")=y
Rs.Update
%>
#16
d.asp
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
%>
<%
DBPath="xy.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
rs="DBQ="&server.mappath(dbpath)&";DRIVER={Microsoft Access Driver (*.mdb)};"
conn.Open rs
set rs=server.createobject("adodb.recordset")
rs.open "Select * From xy where id=1",conn,3,3
do while not rs.eof
%>
<?xml version="1.0" encoding="gb2312" ?>
<plan>
<yy><%=application("show6")%></yy>
<img><%=Rs("x")%>,<%=Rs("y")%></img>
<a><img src="1.jpg" width="<%=Rs("x")%>",height="<%=Rs("y")%>"></a>
</plan>
<%rs.movenext%>
<%loop%>
<%
Response.expires = 0
Response.expiresabsolute = Now() - 1
Response.addHeader "pragma", "no-cache"
Response.addHeader "cache-control", "private"
Response.CacheControl = "no-cache"
%>
<%
DBPath="xy.mdb"
Set conn = Server.CreateObject("ADODB.Connection")
rs="DBQ="&server.mappath(dbpath)&";DRIVER={Microsoft Access Driver (*.mdb)};"
conn.Open rs
set rs=server.createobject("adodb.recordset")
rs.open "Select * From xy where id=1",conn,3,3
do while not rs.eof
%>
<?xml version="1.0" encoding="gb2312" ?>
<plan>
<yy><%=application("show6")%></yy>
<img><%=Rs("x")%>,<%=Rs("y")%></img>
<a><img src="1.jpg" width="<%=Rs("x")%>",height="<%=Rs("y")%>"></a>
</plan>
<%rs.movenext%>
<%loop%>
#17
http://bbs.nuc.edu.cn/pc/pccon.php?id=15&nid=81&order=&tid=17