|
![]() |
名片设计 CorelDRAW Illustrator AuotoCAD Painter 其他软件 Photoshop Fireworks Flash |
|
几个月以前,一个同事到我这里来,说他有一个客户端JavaScript的问题。我不得不向他解释说,活动服务器页面(ASP)的区段变量不能从客户端访问,除非它们通过cookie或者隐藏的输入框被传递。但是我没有停止继承寻找从客户端访问ASP区段变量更好方式的工作。 最近在研究如何不需要上传和下载页面就能够从服务器获取信息时,我读到了关于XMLHTTP ActiveX对象的内容。从本质上讲,这个对象为Internet Explorer和Web服务器通讯并接收回应提供了一种方式。它是MSXML动态加载库的一部分,其当前的版本是第4版,并能从微软免费下载。同样值得重要的是,注重对于微软Internet Explorer 5.x,MSXML缺省的版本还是第2版。 XMLHTTP基础 你可以使用XMLHTTP对象在服务器上执行一个ASP,等待服务器的回应,然后根据回应来动作。这意味着有了一个JavaScript函数和一个专用的动态服务器页面,就有可能解决从客户端访问变量的问题。客户端需要区段变量的值吗?没问题!你要做的全部工作就是调用一个小小的函数。 实现XMLHTTP对象 只要开始试着实现以前没有尝试过的概念或特性,我通常会发现把问题分解成逻辑件会更轻易一些。在这种情况下,我从服务器端的和客户端的开始。心里有这个概念,我命名为test.asp的服务器端活动服务器页面看起来就是这个样的了: <%@ Language=VBScript%> <% Response.Write Session(Request.QueryString("variable")) %> 这个服务器端代码段的目的是返回任何和查询字符串里同键相关联的ASP区段变量的值。 由于哀求是从客户端发起的,而且有一个对象正在被使用,所以客户端这一部分会更具体。创建XMLHTTP对象、设置对象的属性、调用对象的发送方式,以及根据对象返回的信息进行动作,这些都是有必要的。Listing A是执行这些任务的JavaScript。 要进一步检查XMLHTTP的可能性,就有必要往回走一步,这是因为利用URL把查询信息从客户端送到服务器端是有局限性的。URL最大长度限定为2,048字节。这2KB的最大长度还包括了URL的非查询字符串这部分。要更进一步就要找到一种更好的方式,把信息从客户端送到服务器端。 我只花了大约20分钟就决定好了如何把信息从客户端传递到服务器端。我决定使用HTTP。在你确定我脑子发懵但已经回过神以前,让我来解释一下。我要在HTTP报头里传递信息。通过包头来传递信息就能够避免使用URL传递信息所无法避免的2,048字节的限制。 心里有了这些,现在就需要修改通过URL传递信息的例子了。在客户端不是要把参数添加到test.asp的URL里,而是XMLHTTP对象的setHeader方式会传递这个参数。进行这样的修改就产生了Listing B里的客户端程序。 在服务器端,有必要从HTTP报头里而不是哀求对象的查询字符串里取回区段变量名。其结果是: <%@ Language=VBScript %> <% Response.Write Session(Request.ServerVariables("HTTP_test")) %> 更进一步 我在这里所描述的对象叫做XMLHTTP。注重这个对象的头3个字母是XML。你已经见过了如何在客户端和服务器端传递信息,但是XMLHTTP对象的初衷是答应信息作为XML在客户端和服务器端传递信息。在以后的文章里,我会解释如何使用XML的简朴对象访问协议(SOAP)来交换更加复杂的信息。 返回类别: 教程 上一教程: ASP中如何调用存储过程 下一教程: 将身份证从15位升级为18位的函数 您可以阅读与"XMLHTTP ACTIVEX对象的访问ASP区段变量的其他方式"相关的教程: · 面向对象的ASP编程之六-用于自动显示RECORDSET的表格 · ASP分页的基于对象的解决 · ASP中使用SESSION变量的优缺点 · 面向对象的ASP编程之四-一些常用的函数 · 用ASP来做免费邮箱的访问 |
![]() ![]() |
快精灵印艺坊 版权所有 |
首页![]() ![]() ![]() ![]() ![]() ![]() ![]() |