使用xmlhttp为网站增加股市行情查询功能(2)
发布时间:2007-10-10 21:09:00
二、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之股票行情篇 - asp之家 - http://www.aspxhome.com</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上运行通过。实际使用过程中,可以把上述代码拷贝到自己网页中,经过简单的页面编辑,就可在自己的网页中增加在页面无闪烁情况下的股票信息查询功能了,初看上去,还真的有点象专业的证券服务商网站提供的服务了。


猜你喜欢
- 用法:注意是用英文的逗号",",且之间没有空格。文件名,[工作表名称,不写则默认当前激活的表],[从第几行开始,不写则默
- 学习内容1.软件安装及服务器设置。2.(选做,但是强烈建议) 使用图形界面软件 Navicat for SQL3.数据库基础知识数据库定义关
- ★二维数组的使用方式:先声明或者定义,再赋值1)语法:var 数组名[大小][大小]类型2)比如:var arr[2][3]int[][]两
- 解决anaconda打不开的问题,亲测成功!!彻底卸载四步骤1.找到anaconda的安装路径,删除envs文件和pkgs文件2.运行ana
- 摸到她了!青翠的衣衫,奶白的肌肤,捧在手上的感觉真是太好了,心里美滋滋的。《悟透JavaScript》,一本偶然之作,终于成书并出版了。本书
- CREATE DATABASE `ct` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_c
- 下面是我写的NumericStepper:谢谢 果果 和 Rimifon , 我对代码进行了完善, 支持自适应小数位数:
- 见过很多网站,在设计的时候给了用户很大的自由度,我个人并不赞同这种做法。最简单的例子,圈网。我在研究圈网的时候注册完成后圈网给了我一个搜索框
- 经常使用python检测服务器是否能ping通, 程序是否正常运行(检测对应的端口是否正常)以前使用shell脚本的写法如下:PINGRET
- 1、用apt-get安装mysql#更新一下apt 仓库sudo apt-get update#安装mysql-servicesudo ap
- 今天遇到一个蛮奇怪的问题:当我在控制台中使用 urllib 没问题,但是当我在 vscode 中 .py 文件中导入 urllib 使用时会
- C方法是ThinkPHP用于设置、获取,以及保存配置参数的方法,使用频率较高。了解C方法需要首先了解下ThinkPHP的配置,因为C方法的所
- Mysql中limit的用法:在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候怎么办呢?不用担心,mysql已经为我们
- 获取nc数据的相关信息from netCDF4 import Datasetimport numpy as npimport pandas
- mktime()方法是localtime()反函数。它的参数是struct_time或全9元组,它返回一个浮点数,为了兼容时ti
- 写在前面:前一段时间 kejun 给我们培训JavaScript的时候,在幻灯片上推荐了很多特别经典的文章,其中就有这一篇。读过之后感觉很不
- 什么是SeleniumSelenium是一个用于测试网站的自动化测试工具,支持各种浏览器包括Chrome、Firefox、Safari等主流
- 学习完如何生成一个 excel 文件之后,接下来我们继续学习一下如何在 excel 文件中写入一个比较简单的图表,先来看一下所需要的几个函数
- python的开发工具有很多种,各有特点,本人一直使用的是pycharm,所以本篇内容仅限pycharm。1,设置python文件头模板当我
- 0. 前言无论在工作中,还是学习中,都会出现这样子的需求,对某张表进行了排序(按时间排序也好,其他字段排序也罢),然后获取前x行的数据,由于