- 热门文章:
- · .Net Enterprise服务器可能太早冠上.Net名号了
- · 维护ASP的会话状态
- · 浅谈引用计数
- · 使你的窗体保留在桌面的最上面
- · 研究心得------->Seskin控件包中SeskinEdit汉字问题的解决办法
- · 建立三层结构的ASP应用程序
- · 研究心得------->CPU信息的获得,比较全面的
- · Sender 的??用:所有Edit共用一???^?V格式
- · override deal with window closing in database application
- · C++ 和 Delphi 的函数覆盖(Override)与重载(overload
- · 正确处理ASP动态网页中的容错机制
- · 几例在ASP存储过程的使用方法
上一篇:自定义配置节处理实现个性化web.config >>
使用xmlhttp为网站增加股市行情查询功能
一、原理
原理非常简单,在很多大型网站上都有实时更新的股市行情信息,我们通过自己的WEB服务器发送出XMLHTTP命令访问雅虎财经站点的股市行情数据库服务器,从数据库中查询我们所需要的内容,然后通过ASP组合成网页回送给客户端。
同时,我们使用XmlHttp协议实现客户端网页无刷新效果以及向服务端提出检索数据的要求。
XMLHTTP允许你打开一个到任意服务器上的HTTP连接,发送一些数据和取回一些数据。并且所有的这一切都是在很少的几段脚本中就能够实现。使用XMLHTTP对象通常是进行XML数据交换,但其他格式的数据也是允许的。
在商业程序中的运用这种交换类型的标准模式是客户端发送一个文本字符串到服务端,然后服务端将这个字符串装载入一个XMLDOM对象中并且解释它,然后返回一段HTML给客户端,或则是另外一段XML代码给客户端让客户端的浏览器自己解释。在这种方式下,对于信息的传递来说是非常有效的形式,尤其是当你使用DHTML允许你根据返回信息动态显示时。
具体流程为:客户端通过xmlhttp提出股票行情查询要求-->WEB服务器中的ASP侦听页接受请求后使用xmlhttp向股市行情数据库服务器发送检索命令-->数据库执行查询操作,返回结果给我们自己的WEB服务器(html形式)-->WEB服务器接收到内容后,过滤掉HTML多余部分,挑选出纯股票数据,组合后将结果传送给客户端->客户端浏览器使用vbscript显示出来。
二、ASP XmlHttp编程简述
1、客户端dns2.htm页面:
<script language="vbscript">
Sub submit1_onmouseup
Dim objXML, objXSL, objFSO,strFile, strFileName, strXSL,strURL, theString,TheForm
Set TheForm = Document.wordfind
window.status="正在检索数据???"
strURL="dns2.asp" ‘’ 服务器侦听页地址
Set objXML = CreateObject("Microsoft.XMLHTTP") ‘’创建MS的XMLHTTP组件
stra = "submit=submit&fqdn="&TheForm.webname.value
objXML.Open "post",strURL,false ‘’采用Post提交方式;
objXML.setrequestheader "content-length",len(stra)
objXML.setrequestheader "content-type","application/x-www-form-urlencoded"
objXML.send stra ‘’ 发送信息
xmlGet = objXML.responsebody ‘’稍等片刻后,得到服务器端传回来的结果;
xmlGet = bytes2bstr(xmlGet) ‘’将单字节转换成文本格式函数,源程序可以下面的dns2.asp程序中找到;
TheForm.comments.value=xmlGet
Set objXML = Nothing
end sub
</script>
<html><head><title>XMLHTTP之股票行情篇</title><meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body bgColor=#a1bae6>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td width="100%" align=center>
<form method="post" name=wordfind onsubmit="javascript:return false">
<FONT color=#002e5b face=geneva,arial,sans-serif size=2>
<B>请选择股票名称(美国纳斯达克)</B></FONT>
<FONT color=#002e5b face=geneva,arial,sans-serif size=2><B>:<br>
<select name=webname style="HEIGHT: 22px; WIDTH: 80px">
<option value="^IXIC">纳斯达克</option><option value="ASIA">亚信</option>
<option value="CHINA">中华网</option> <option value="NTES">网易</option>
<option value="SINA">新浪网</option> <option value="SOHU">搜狐</option>
</select><input type="submit" value="查询" id=Submit1 name=Submit1></B>
<TEXTAREA name=comments readonly rows=10 cols=76 ></TEXTAREA>
</form></td></tr></table></body></html>
2、服务器端dns2.asp程序:
<%
dim xmlGet
xmlGet=""
if len(trim(Request.form("fqdn"))) > 1 then
Dim objXML, objXSL, objFSO
Dim strFile, strFileName, strXSL
Dim strURL, theString
‘’股市行情数据库服务器的地址
strURL="http://cn.finance.yahoo.com/q?s="+trim(Request.form("fqdn"))+"&d=2b"
Set objXML = CreateObject("Microsoft.XMLHTTP") ‘’创建MS的XMLHTTP组件
objXML.Open "get", strURL, False
objXML.Send ‘’ 发送信息
xmlGet = objXML.responsebody ‘’稍等片刻后,得到股市行情数据服务器端传回来的结果;
xmlGet = bytes2bstr(xmlGet) ‘’转换成文本格式函数,可以源程序中找到;
‘’过滤无用的HTML成分,挑选出股票具体信息;
strFind1 = instr(1,xmlGet,"最後交易",1)+8
strFind2 = instr(strFind1,xmlGet,"<b>",1)+3
strFind3 = instr(strFind2,xmlGet,"</b></td>",1)
xmlGet1="最后交易:"+mid(xmlGet,strFind2,strFind3-strFind2)+chr(13)+chr(10) ‘’最后交易价
strFind1 = instr(1,xmlGet,"涨跌",1)+4
strFind2 = instr(strFind1,xmlGet,"<font color=",1)+19
strFind3 = instr(strFind2,xmlGet,"</font>",1)
xmlGet2="涨跌:"+mid(xmlGet,strFind2,strFind3-strFind2)+chr(13)+chr(10) ‘’涨跌
Set objXML = Nothing
end if
response.write trim(Request.form("fqdn"))+"的股市行情:"+chr(13)+chr(10)+xmlGet1+xmlGet2
function bytes2bstr(vin)
strreturn = ""
for i = 1 to lenb(vin)
thischarcode = ascb(midb(vin,i,1))
if thischarcode < &h80 then
strreturn = strreturn & chr(thischarcode)
else
nextcharcode = ascb(midb(vin,i+1,1))
strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode))
i = i + 1
end if
next
bytes2bstr = strreturn
end function
%>
在上述过程中,可以发现我们自己的WEB服务器中的ASP程序其实只起到一个中间传递的作用,在实际应用中,也可以省去这个中间层,使用vbscript通过xmlhttp直接向股市行情数据库发送和接收数据。不过这样的话,可能会因为IE中“通过(其它)域访问数据资源”被禁用(默认)而引起权限不够导致无法执行,所以该省去ASP中间层的方法并不太通用。
本程序在基于Windows2000平台的IIS5.0和IE6.0上运行通过。实际使用过程中,可以把上述代码拷贝到自己网页中,经过简单的页面编辑,就可在自己的网页中增加在页面无闪烁情况下的股票信息查询功能了,初看上去,还真的有点象专业的证券服务商网站提供的服务了。
查看源程序:
http://www.ccw.com.cn/htm/center/prog/02_7_24_4_2.asp
相关文章:
- · 实现让每句话的头一个字母都大写
- · 如何尽快释放掉Connection对象建立的连接?
- · Connection对象的应用
- · 利用ASP打造网站论坛DIY
- · Asp中代码与页面的分离
- · 一个ASP版的图片浏览管理器
- · 实现有管理功能的ASP留言板
- · 编译asp应用程序成为exe文件
- · 如何准确定时运行ASP文件
- · ASP整合的一个SQL语句类
- · Jmail发信的实例,模块化随时调用
- · ASP字数计算函数
- · 无刷新随时取得用户当前活动信息
- · ASP自定义函数,仿VBA中域函数DLookup
- · asp中对ip进行过滤限制函数
- · 让ASP程序运行于非Windows平台
- · ASP中实现文件上传方法的研究
- · asp国标转大五码
- · Global.asa文件用法大全
- · 微软建议的ASP性能优化28条守则
- · 在ASP中取得服务器网卡的MAC地址、DNS地址等网络信息
- · ASP中记录的分页
- · 下载网页中的所有资源
- · 函数方便制作管理界面
- · 无限级目录树+记忆节点状态
- · 利用C#在SQL Server2000存取图像 For Window
- · 通过MSXML2自动获取QQ个人头像及在线情况(给初学者)
- · ASP模板类[实现一维循环和二维循环,可以从文件、数据库、变量取摸板]
- · 各种存储过程使用指南
- · 树型结构在ASP中的简单解决
- · 用ASPJPEG组件制作图片的缩略图和加水印
- · 用asp制作强大的搜索引擎(一)
- · VBscript和javascript的选择
- · 在ASP中使用SQL语句之2:用WHERE子句设置查询条件
- · 在线压缩WINRAR文件
- · 在线解压缩上传的WINRAR文件
- · 用javascript实现的日历
- · 在表单里使用”post”和”get”有什么区别
