在

Active Server Pages中结合Scripts脚本

Active Server Pages

主要就是Scipts脚本环境，在你学习本书第二章的时候，你就可以将VBScript和JScript结合到你的Active Server Pages中去，你可以同样在Active Server Pages中很好的利用其他的脚本语言。任何一个可以和Active X Script标准兼容的脚本语言引擎都可以用于Active Server Pages。

注意

如果你熟悉Perl,你就会很高兴发现Perl和Active Server Pages是兼容的。如果希望更多了解，请看http://www.hip.activeware.com或访问http://www.aspsite.com

在

Vbscript和Jscript的章节中（相应第8和第9章），你会学到怎样将Script脚本结合到Active Server Pages的具体实现。这部分主要是详细解释以及介绍一些可选择的方法来进行Scripts和Active Server Pages的结合。

最简单的结合Scripts的方法是利用<%和%>，任何在这个符号中包容的都被认为是一个Scripts脚本。下面是个例子：

<html>

<head><title>ASP Script

示例</title></head>

<body>

这是个

<% for I=1 to 10 %>

非常

,

<% next %>

非常长的句子。

</body>

</html>

该段

Active Server Pages执行后在浏览器上显示为：

这是个非常，非常，非常，非常，非常，非常，非常，非常，非常，非常，非常长的句子。

这段脚本利用VBscript的For...Next循环生成了11份‘非常’的拷贝。

Active Server Pages

默认为您主要使用的是VBscript，也就是说，在使用<%和%>时不需要作任何事情来说明使用何种语言。不过，如果需要限定的话，您可以有三种方式。

首先，你可以在

Internet Information Service管理器来进行限定使得所有Active Server Pages的默认语言为你所限定的。这样做的步骤如下：

1.

从开始菜单IIS(Internet Information Service)的程序组中执行网络服务管理器

2.

右键你的网站名称（如果你没有改变默认设置，名称将是Default Web Site）

3.

选择属性项

4

点击主目录表。

5

点击设置按钮（要做这个，你必须有一个存在的Application。如果没有的话，点Creat来创建一个。）

6.

在Application Configuration的对话框中，点App Option表。

7.

在默认的ASP语言文本框中，输入你所要的主要脚本语言，例如Vbscript或者Jscript。

当这些作完后，

<%和%>中包容的程序就默认为你所指定的那种语言。

你还可以在特定的主页中指定主要脚本语言，这样做，你要将这种语言名称直接放在你的Active Server Page文件最靠上的一行，如下：

<%@ LANGUAGE=Jscript %>

<html>

<head><title>ASP Script

示例</title></head>

<body>

这是个

<% for(i=1;i<11;i++){ %>

非常，

<%}%>

非常长的句子。

</body>

</html>

这种直接放在首行的脚本，指示出这个文件中所有脚本都将利用

JSCRIPT生成，当你利用这种方式指定脚本语言时，请注意在@和保留字LANGUAGE之间空出一个空格。另外，非常重要的是这句指示要在任何一句命令之前（否则就要报错了）。

图13.1 使用Internet Service Manager来确定缺省脚本语言

你的第三种在Active Server Pages包含Scripts脚本的选择是利用微软的HTML<Script>拓展对象，例如下面：

<html>

<head><title>ASP Script

示例</title></head>

<body>

<script language=

“Jscript” runat=“server”>

function sayhello()

{ response.write(

“hello! 迈至科”)

}

</script>

<% sayhello() %>

</body>

</html>

这里，<script>对象包含了一个Jscript函数。<script>的Language属性限定了使用哪一种语言。RUNAT属性是指示出该脚本应当在Server端还是在Client（浏览器上）端实现。

这个函数在第一行中被命名为sayhello()。在第二段脚本中，利用<%和%>标记的对象是真正调用该函数的位置。Active Server Pages会在显示器上显示出字符串

“

hello! 迈至科”

注意

response.write()

语句是将一段文本显示在显示器上。您会在后面的内容中了解更多。

如果你创建了一个客户端的VBscript或者JScript脚本，你就应当对<SCRIPT>更加熟悉了。微软的<Script>拓展可以被用来指定是在服务端还是在客户段执行。如果你忽略了RUNAT=server这个限定，你的script脚本将被认为是客户端的。这种场合下，Server端将忽略这个script并由浏览器尝试执行〔然而会很悲惨的以失败告终，因为这不是一个合法的客户端script脚本〕。

为什么你会直接使用<Script>对象而不是<%和%>来限定scipt脚本语言？通常，你不会使用<script>对象。不过，这两种限定一个Script脚本的方法还是有很明显的区别的。

首先，使用<script>包含的直接脚本会立即执行，无论在Active Server Pages的任何位置。例如下面这个例子。

<html>

<head><title>ASP Script

示例</title></head>

<body>

This is the first sentence

<script LANGUAGE=

“JScript” RUNAT=“server”>

response.write(

“This is the second sentence.”)

</script>

</body>

</html>

看这个例子后，您也许会认为，显示器上会首先显示This is the first sentence,然后是This is the second sentence,但是，这个Active Server Pages显示在浏览器上是相反的顺序。（或者什么都不显示，那是因为生成了非法的HTML语法）

为什么会这样？因为主页里面无论什么放在<script>里面都会首先执行。如果你使用浏览器的View Source，你会看见你的主页被Active Server Pages解释为如下：

This is the second sentence.<html>

<head><title>ASP Script

示例</title></head>

<body>

This is the first sentence.

</body>

</html>

<script>

对象的行为有两种含义。首先，你能够在Active Server Pages的任何位置上的<script>对象中放置你的script脚本。其次，<script>对象，如果用于更多的目的来说，将会用包含函数和子程序的方法来进行限制。任何不包含函数或者子程序的脚本都将被立即执行显示为一个非法的HTML主页。

<script>

对象使用<%和%>限制有一个明显的优点。使用<script>对象，你可以在一个单独的主页中混合使用多种script脚本。看下面这个例子：

<%@ LANGUAGE=

“VBScript” %>

<html>

<head><title>ASP Script

示例</title></head>

<body>

<script LANGUAGE=

“JScript” RUNAT=“server”>

function sayhello()

{

response.write(

“hello! 迈至科”)

}

</script>

<% for I=1 to 10

sayhello()

next

%>

</body>

</html>

这个script脚本在一列中显示了十次”hello! 迈至科”,但是请注意这是怎么实现的，这个包含在<%和%>中的脚本是用Visual Basic写成的，不过，这个脚本调用的是JScript函数，这个JScript函数是在<Script>对象中定义的。当你希望在你的主脚本用一种语言而又需要调用另一种语言的函数，你可以使用这种方法。这样可以弥补一些语言在常用函数和方法上的缺乏。

作为总结，在一个

Active Server Pages上指定脚本语言有三种方法。

·

利用 Internet Information Server来指定作为你所有脚本中的默认语言。

·

在每一个单独的Active Server Pages中的最上面一行利用<%@ LANGUAGE=“script语言”>来指定针对这个单独Active Server Page所使用的脚本语言。

·

利用Active Server Pages的<script>拓展来在一个Active Server Page中分别在相应位置指定多种脚本语言。

在这部分结束以前，将讨论最终极的

Active Server Pages指令，利用Active Server Pages输出指令，你可以直接显示表达式值。以下是个例子：

<html>

<head><title>ASP

示例</title></head>

<body>

At the Tone,the time will be: <%=time%>

</body>

</html>

你可以使用<%和%>标志来输出变量、方法（method,针对于对象的方法）以及函数的值，在上面的例子中，VBScript的时间函数值会输出到显示器上。

你可以用下面的方法完成同样的事，见下面例子：

<html>

<head><title>ASP

示例</title></head>

<body>

At the Tone,the time will be:<

％response.write(TIME)%>

</body>

</html>

在这个例子中，VBScript的Time函数值将被Active Server Pages的Response对象输出出来，response对象的write()方法是将表达式中的值显示出来。（下一章中，你会学到更多有关对象和方法的知识）。

那么补充说明的是对于Active Server Pages内部<%=和%>也就是代表了Response.write()方法，因此无论你用哪一种方法其实是一样的，没有任何区别。

注意

当你使用

<%=和%>来进行输出时，如果此时显示错误信息，将相应显示为response.write()语句，你也许会因为你的程序中没有这句话而困惑，其实这正说明二者实际上在Active Server Pages中是完全一致的。

虽然如此，在有些场合下某一种输出方式显然更方便一些，例如，当你需要在一个script脚本中输出表达式值，通常response.write()更加容易处理，如果只是在HTML的某一位置输出表达式值，那么<%=和%>则更容易使用。如下例：

<HTML>

<head><title>ASP

示例</title></head>

<body>

<%

For i=1 to 5

myvar=myvar&

“非常, ”

response.write(i&

“:”&myvar&“<br>”)

next

%>

<hr>

这是一个

<%=myvar%>长的句子。

</body>

</html>

在这个例子中，response.write()在script脚本的循环中显示越来越长的子段。而<%＝和%>指令则是直接在主页的具体位置显示出变量myvar的值。

图

13.2为显示结果。