选择显示字体大小

用asp、vb和xml建立互联网应用程序(3)

  假设在我们前面所说的例子中,我们想在应用程序中显示区域的左半边显示客户的姓名列表,再在每个客户姓名后面加上两个链接:purchase history和recent purchase。当用户点击其中的一个链接,客户程序就会运行一个存储过程并在右边区域显示出结果。 为了显示这个想法的灵活性,我想让用于返回数据的三个操作单元执行不同的工作过程,它们都调用getdata.asp。首先,通过调用custorderhist来运行一个存储过程,返回客户的purchase history,它搜索northwind数据库(为了方便起见我使用ms sql中自带的数据库)并返回一个数据集。用于返回recent purchase 的查询语句运行一个叫recentpurchasebycustomerid的存储过程,来接收输入的customerid参数并通过productname参数返回最近顾客购买的商品名。定义其处理过程相应sql语句如下:

  create procedure recentpurchasebycustomerid @customerid nchar(5), @productname nchar(40) output as select @productname = (select top 1 productname from products inner join ([order details] inner join orders on orders.orderid=[order details].orderid) on products.productid = [order details].productid where orders.orderdate = (select max(orders.orderdate) from orders
where customerid=@customerid) and orders.customerid=@customerid) go

  不管你的查询语句中含有动态sql语句还是含有返回记录集的存储过程或是输出一个返回值,其处理post消息的方法是一样的:

  set xhttp = createobject ("msxml2.xmlhttp")
  xhttp.open "post", "http://localhost/myweb/ getdata.asp", false
  xhttp.send s

  好了,现在让我们看一看如何发送和接收数据

  客户端的xml信息是由一个<command>元素和一些子元素组成:<commandtext>元素包含了存储过程的名称,<returnsdata>元素告诉服务器,客户端是否要求接收返回数据,<param>元素包含参数信息。如果不使用参数的话,那么最简单的发送字符串查询就象下面这样:

  <command>
   <commandtext>

  存储过程或动态sql语句

  </commandtext>
   <returnsvalues>true</returnsvalues>
  </command>

  你可以为每一个参数使用一个<param>元素,来添加参数。每个<param>元素有五个子元素:name,type,direction,size和value。子元素的顺序可以随意调换,但是所有的元素都应当有不能缺少,我通常按照定义一个ado对象的值的顺序来定义它们。举例来说,custorderhist存储过程需要一个customid参数,所以用来创建发送到getdata.aspxml字符串的代码为:

  dim s
   s = "<?xml version=""1.0""?>" & vbcrlf
   s = s & "<command><commandtext>"
   s = s & "custorderhist"
   s = s & "</commandtext>"
   s = s & "<returnsdata>" &true</returnsdata>"
   s = s & "<param>"
   s = s & "<name>customerid</name>"
   s = s & "<type><%=advarchar%></type>"
   s = s & "<direction>" & <%=adparaminput%></direction>"
   s = s & "<size>" & len(customerid)& "</size>"
   s = s & "<value>" & customerid &"</value>"
   s = s & "</param>"
   s = s & "</command>"

  注意,前面的代码都是客户端代码,ado常量是不在客户端定义的-这就是它们为什么使用<% %>标记围起来的原因。服务器在发送响应之前使用正确的值取代它们。getdata.asp页有一个response.contenttype,它的属性为"text/xml",这样,你就可以使用responsexml属性来返回结果了。当请求返回纪录,你就可以创建一个recordset对象并且使用xmlhttp来打开它:

  dim r
   set r = createobject("adodb.recordset")
   r.open xhttp.responsexml

  当查询语句返回数据时,通过设置xmlhttprequest对象的responsexml属性来创建一个domdocument:

  dim xml
   set xml = xhttp.responsexml

  输出参数的xml字符串的每个返回值都包含一个元素,它们都是根元素<values>的直接子元素,例如:

  <?xml version=""1.0"" encoding=""gb2312""?>
  <values>
  <paramname>value</paramname>
   <paramname>value</paramname>
  </values>

  如果你的数据使用别的国家的文字,你可能需要把编码属性用相应的编码替换,例如对于大部分欧洲语言,可以使用iso-8859-1

  客户端页面使用返回的数据来格式化一个html字符串用于显示,如:

  document.all("details").innerhtml = <一些格式化的html字符串>

  


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons