欢迎光临!今天是2017年10月18日 星期三
首页 基础教程  留言薄制作  神奇FSO  ASP优化  ASP实例  SQL语法  VB教程  安全手册  综合技巧  案头必备  留言  
 综合技巧
·ASP技巧TOP10 (1)
·ASP技巧TOP10 (2)
·ASP技巧TOP10 (3)
·ASP技巧TOP10 (4)
·奇妙的文件系统对象组件
·关于在浏览器中文件上载的方法..
·存储过程分页
·在同一页面动态实现两个sel..
·用ASP实现WEB页面分用户..
·怎样用ASP访问SQL Se..
·在Web页面中执行Windo..
·ASP程序中日期型数据的格式..
·ASP中数据库操作中游标和加..
·如何在Web页面中集成文件上..
·有关win2000、IIS5..
·在您的网站中加入互动功能
·ASP服务器组件的编程
·数据库聊天室的“无刷新”技术..
·ASP页面内VBScript..
·ASP中处理#include
·关于数据库连接的一点个人见解
·利用ASP显示当前在线人数
·在ASP处理程序时,进度显示
·ASP中文本文件与数据库文件..
·FrontPage创建HTM..
·FrontPage创建HTM..
·如何使ASP输出结果不支持h..
·用几行Asp代码实现防止表单..
·在Flash中使用ASP技术
·在ASP中使用脚本语言
■ 综合技巧 > ASP页面内VBScript和JScript的交互
  ASP 具备管理不同语言脚本程序的能力,能够自动调用合适的脚本引擎以解释脚本代码和执行内置
函数。ASP开发环境提供了两种脚本引擎,即VBScript(缺省)和JScript。不过,开发者并没有被限制
于只能使用这两种语言,只要能够提供合适的ActiveX脚本引擎就能使用任何脚本语言。
  脚本语言的选择往往基于许多不同原因:它可能是开发者最为熟悉的语言,可能是对给定工程来说
能够提供最多特色支持的,也有可能是最具效率的。不同的环境和要求使得我们在选择脚本语言时注重
不同的因素,同时也使得我们在某些时候面临选定的脚本语言不能直接提供其它语言固有的函数这一问
题,或某个脚本已经写成但用的却是另外一种脚本语言。
  此时应该怎么办?是否需要用当前所用的脚本语言重写这些脚本?或者说,是否有可能在一种脚本
语言中调用其它脚本语言的内置函数?本文要说明的就是在ASP应用中如何让VBScript脚本和JScript脚
本交互以最大限度地获得两种脚本语言的特色支持。

  一、VBScript和JScript的内置函数
  在VBScript和JScript 中,有大量的内置函数功能是相同或类似的。然而,在一种脚本语言中内置
的函数并非总是在另外一种脚本语言中也有对应的函数。例如,VBScript提供了许多用于操作字符串和
格式化数据的函数,这些函数在JScript中并不存在。这些函数包括StrReverse()、Filter()以及Forma
tCurrency()等。在另一方面,JScript所提供的用于管理数组、字符串编码等的函数在VBScript中也没
有定义,如join()、reverse()、pow()、位操作、escape()和unescape()等。
   那么,如果在JScript程序中需要一个VBscript函数该怎么办呢?

   二、异种脚本的互相调用
   如果需要在JScript脚本中调用一个VBScript中内置的函数,则应该写一个VBScript用户定义函数
(在这里调用VBScript内置函数),然后在JScript脚本中象调用公用JScript函数一样调用这个用户定
义函数。

  例如,如果要调用的VBSCript内置函数是FormatCurrency(),则可以声明如下自定义函数:
  <SCRIPT LANGUAGE="VBSCRIPT" RUNAT="SERVER">
  Function FormatValue(Value)
   FormatValue = FormatCurrency(Value)
  End Function
  </SCRIPT>
  接下来在JScript代码中就可以象普通JScript 函数一样调用FormatValue()了。用类似的方法也可
以实现VBScript代码调用JScript函数。
  应用同样的规则,我们可以在任何脚本内调用任何用户定义函数。不过,从JScript 脚本内调用一
个不带参数的VBScript过程(Sub)时应略加注意,此时在JScript中应该象调用一个不带参数的JScrip
t函数一样调用它,如用foo()调用VBScript Sub foo过程。

  三、数据共享
  在某些情形下混合运用VBScript和JScript 函数是非常有用的,但在不同语言脚本之间共享数据也
可能很有用。实现这种共享的方法很简单:不管使用的是什么语言,只要是在页面级声明的变量就可以
任意引用。
  对象的使用方法也相似,可以任意选用合适的语言读取、修改属性或调用对象的方法。当然给定对
象的属性和方法是由创建该对象实例的语言所定义的。正如上例VBScript的过程调用,当从JScript 中
调用一个不带参数的VBScript对象的方法时,其调用方法也遵从JScript的调用规则,反之亦然。

  四、数组管理
  数组共享问题稍微复杂一点。虽然数组也象其它变量一样可以在不同语言脚本之间共享,但必须注
意兼容方面的问题。
  VBScript数组在JScript下可以用VBScript的符号引用,即用myArray(2)引用数组元素而不是JScri
pt的数组元素引用符号myArray[2]。此外,还可以使用一个特殊的JScript对象——VBArray对象将VBSc
ript数组转换为JScript数组。下面的代码从VBScript数组myVBArray创建JScript数组myJSArray:
 var Temp = new VBArray(myVBArray)
 var myJSArray
 myJSArray = Temp.toArray()
  上述代码首先创建一个临时的VBArray对象,然后使用它的toArray()方法将自己转换为JScript 数
组。此后就可以象普通JScript数组一样用myJSArray,如 myJSArray[1]。但应当注意的是,toArray()
方法将把一个多维的VBArray转换为一维的JScript数组。

  从VBScript中引用JScript数组更为复杂。虽然在VBScript中我们可以直接访问JScript数组相关的
方法和属性,但没有直接访问JScript数组的单个元素的方法。也就是说,我们可以在VBScript 脚本中
读取JScript数组的长度属性,如下所示:

  x = myJSArray.length

  但无法直接读取该数组的单个元素,下面的VBScript代码是不正确的:

  x = myJSArray(3)

  解决该问题的一个可行的方法是执行一个转换过程,如下面的代码所示,此处假定VBScript是缺省
的脚本语言:
<%
  Dim Temp
  Dim myVBArray
  Temp = myJSArray.join(", ")
  myVBArray = Split(Temp, ", ")
%>
  此处的JScript join()方法将数组myJSArray元素转换到一个以逗号为分割符的字符串, VBScript
Split()函数将字符串转换为VBScript数组。注意这里我们是在VBScript环境下调用JScript的join方法
依照此例,我们可以通过自定义VBScript函数来模拟JScript的VBArray对象的toArray()方法以实现JSc
ript数组到VBScript数组的转换。

  五、小结
  在同一个ASP 工程内灵活选用不同脚本语言具有许多优点,这些脚本之间的交互能力更为开发者集
成不同语言所提供的内置函数和其它功能带来了更多的机会,同时也使得实现既可用于VBScript也可用
于JScript环境的通用脚本库成为可能。
■今日推荐:数据库聊天室的“无刷新”技术要点

本网站是学习网站,内容整理大多来自互联网,尽量标明了出处,如果侵犯了您的权力请通知我,立即纠正
欢迎提出宝贵建议,提供相关资料,以便相互学习,共同提高!