编写过程

“过程”是一组脚本命令,可以执行特定任务并返回值。可以定义自己的过程,并在脚本中重复调用这些过程。

可以将过程定义放在调用此过程的同一 .asp 文件中,或者可以将常用的过程放在共享的 .asp 文件中,并使用 #include 命令将此文件包含在调用此过程的其他 .asp 文件中。另外,您还可以将具有某种功能的过程封装在 COM 组件中。

定义过程

过程定义可以出现在 <SCRIPT> 和 </SCRIPT> 标签内,并且必须符合已声明的脚本语言的规则。用主脚本语言之外的其他语言编写的过程将使用 <SCRIPT> 元素。但是,用主脚本语言编写的过程使用脚本分隔符(<% 和 %>)。

使用 HTML <SCRIPT> 标签时,必须使用两个属性以便确保服务器端能够处理脚本。使用 <SCRIPT> 标签的语法为:

<SCRIPT LANGUAGE=JScript RUNAT=SERVER>

  过程定义

</SCRIPT>

RUNAT=SERVER 属性通知 Web 服务器处理服务器上的脚本。如果不设置此属性,将由客户端浏览器处理脚本。LANGUAGE 属性确定此脚本块使用的脚本语言。您可以为服务器指定任何语言,但服务器上必须已经安装了此语言的脚本引擎。可使用值“VBScript”指定 VBScript。可使用值“JScript”指定 JScript。如果没有设置 LANGUAGE 属性,则使用主脚本语言解释脚本块。

脚本块中的命令必须以所选脚本语言形成一个或多个完整的过程。例如,下列命令定义 JScript 过程 MyFunction

<HTML>
<SCRIPT LANGUAGE=JScript RUNAT=SERVER >

  function MyFunction()
  {
    Response.Write("您调用了 MyFunction()。")
  }
  
</SCRIPT>

要点   不要在服务器端 <SCRIPT> 标记内包含任何不属于完整过程的脚本命令。不属于过程的命令可能导致无法预知的结果,因为代码是按下列顺序执行的:先按照出现的顺序执行的非默认语言编写的脚本块,然后是内嵌代码,最后是用默认语言编写的脚本块。此外,不能在过程中使用 ASP 输出定向命令 <%= %>。而应当使用 Response.Write 将内容发送到浏览器。

调用过程

要调用过程,需在命令中包含过程名。如果从 VBScript 中调用 JScript 过程,则过程名后必须使用括号;如果过程没有变量,则使用空括号。如果从 JScript 中调用 VBScript 或 JScript 过程,则过程名后必须总是使用括号。

对于 VBScript,调用过程时也可以使用关键字 Call。不过,如果调用的过程要求变量,则变量列表必须包含在括号内。如果省略关键字 Call,同时也必须省略包含变量列表的括号。如果使用 Call 语句调用任何内置函数或用户定义函数,将丢弃函数的返回值。

下例分别采用两种不同的脚本语言(VBScript 和 JScript)说明如何创建和调用过程。

<%@ LANGUAGE=VBScript %>
<HTML> 
  <BODY>
  <!-- 从 VBScript 内调用 JScript 过程 -->
  <% call printDate() %>
  <!-- 从 VBScrip 内调用 VBScript 过程 -->
<% Echo %> 
  <BR>
  </BODY>
</HTML>

<%Sub Echo%>
<!-- 注意:不会输出任何结果,除非通过诸如 http://localhost/test.asp?x=1%20have&y=a%20cunning&z=plan 的查询字符串调用网页 -->
<%
  Response.Write "<TABLE BORDER=1>" & _
    "<TR><TH>Name</TH><TH>Value</TH></TR>" 

  Set objQueryString = Request.QueryString 
  
  For Each strSelection In objQueryString
    Response.Write "<TR><TD>" & strSelection & "</TD><TD>" & _ 
    objQueryString(strSelection) & "</TD></TR>" 
  Next 

  Response.Write "</TABLE>" 

End Sub 
%>

<SCRIPT LANGUAGE=JScript RUNAT=SERVER> 

function printDate() 
{ 
  var x
 
  x = new Date() 

  Response.Write(x.toString()) 
  Response.Write("<BR>")
} 
</SCRIPT>

注意   VBScript 调用 JScript 函数时不区分大小写。

将数组传递给过程

要将整个数组传递给过程,在 VBScript 中,数组名后应紧接一对空括号;在 JScript 中则应使用空的方括号。


© 1997-2001 Microsoft Corporation. 保留所有权利。