用XMLHTTP实现伪Web服务[2]

[入库:2005年8月18日] [更新:2007年3月25日]

本文简介:选择自 chinaok 的 blog

第三行:如果出错,侦听页会返回<?xml version="1.0"?><results error="true">false</results>出错信息。
第四行:如果正确,dom里就有查询结果,并可通过根节点的子节点长度求得结果数量。
第五行:如果有结果,就将结果绑定到表单上显示。

现在可以对gettitlesxml函数作些补充。
对bookviewer.asp文件作一些改动就能增强gettitlesxml函数的查询功能。用户可以根据书籍的类型,价格和销售日期对书籍进行查询。下面就是改动的代码。注意文本框由原先的只读方式改为常规方式。

var xmlhttp = new activexobject("msxml2.xmlhttp");
var where= "";
if(document.frmfields.stype.value.length>0) where=where + " type= '"+document.frmfields.stype.value+"' and ";
if(document.frmfields.sprice.value.length>0) where=where + " price<= "+document.frmfields.sprice.value+" and ";
if(document.frmfields.ssales.value.length>0) where=where + " ytd_sales>= "+document.frmfields.ssales.value;
if(where.length>0) where = " where " + where;
var xmlcmd='<?xml version="1.0"?><envelope><xmlcmd c1="gettitlesxml" p1="'+where+'" p2="" p3=""></xmlcmd></envelope>'; xmlhttp.open("post", "xml_receive.asp", false);  //用xmlhttp向xml_receive.asp传送指令
xmlhttp.send(xmlcmd);//发出xml指令

第二行到第六行:建立查询语句
第七行:与原先的代码不同在于增加了一个p1参数,它是由第二行到第七行代码建立的。

xml_receive.asp文件的改动:
将新增的p1参数加入到active x控件的gettitlesxml函数中。

//************* function gettitlesxml ***********************
if (c1=="gettitlesxml")
{
   resultsxml=true; //加载结果的xml字符串
   var objwc= server.createobject("webclass.xmlcontrol"); //初始化vb控件
   objwc.strserver=sqlserver; //指向sql server服务器
   xmlreturn=objwc.gettitlesxml(p1); //vb函数,用xml字符串返回结果
   var objwc=null; //释放vb控件
}

结语
这里所作的一切是为了将asp的客户互动应用技术提高一个档次。用户能够在一个简单的网页里访问数据库。查询过程由xmlhttp在后台执行,给用户的感觉就象在用一个windows程序而不是web应用。本文涉及的是web服务理念。比web服务更为复杂的是soap协议,它能使web服务更具有弹性。在一般情况下 (只要不是分布式应用),用上面给出的方法是足够的了。

按照上面描述的技术路线:
 客户端应用-->asp侦听页-->active x控件,以及active x控件-->asp侦听页-->客户端应用
提供的方法,可以在客户端和后台active x控件之间建立通讯联系。asp的侦听页可以给出用户需要的active x控件的部分方法和属性,而将其他内容隐藏起来。在侦听页中可以建立加密机制。这样可以使得整个数据库安全性得到很大程度的提高。因为所有对数据库的访问都是通过active x进行的,只要一些必需的访问函数暴露在asp文件中。

附件:http://www.chinaok.net/down/200204150806170.zip

本文关键:XML,XMLHTTP,Web
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top