&lt; %%&gt;之间的区别是什么?和经典的asp?</script>中的<script language =“vbscript”runat =“server”>

时间:2009-09-19 05:16:49

标签: asp-classic vbscript runatserver

我在网上找不到太多文档

到目前为止,显而易见的差异似乎是你不能使用“脚本”标签混合html和vbscript

例如,这没关系

<% public sub display_literal() %>
  literal
<% end sub %>

但是使用脚本标记


<script language="vbscript" runat="server">
public sub display_literal2()
    response.write "literal2</br>"
end sub
</script>

在此页面上

http://www.newobjects.com/pages/ndl/alp/asp-structure.htm

它说

  

在经典ASP中,以页面的默认脚本语言(即&lt; %%&gt;标签所假定的语言)编写的脚本被执行第二次 - 例如&lt; %%&gt;中的所有脚本代码在所有&lt; SCRIPT RUNAT = SERVER ...&gt;之后初始化标签。脚本。

但是我做了几个测试而无法验证它......

我问,因为我有一个脚本(我现在没有它),使用&lt; %%&gt;给了我一个错误,将其更改为&lt; script&gt;标签解决了问题,但我想知道为什么......

无论如何,我想我们应该使用&lt; script&gt;要从&lt; %%&gt;中调用的函数和过程的标记标签......对吧?

2 个答案:

答案 0 :(得分:10)

首先,您需要了解服务器端script标记的处理方式有所不同,具体取决于指定的语言是否与页面的默认语言相同。

顺序是这样的: -

  1. 运行<script runat="server"标记中的所有脚本,其中指定的语言与默认语言不匹配。这些按文档顺序执行。
  2. 运行默认脚本。这意味着执行对响应的隐含写入,其中页面中存在静态内容(不在runat="server"标记内或<% %>内),以及文档顺序中<% %>中的任何中间代码明显。
  3. 运行<script runat="server"标记中的全局级别的任何代码,其中语言与默认脚本语言匹配。
  4. 请注意,所有脚本在执行阶段1之前都有一个初始解析,因此可以在阶段3中运行的脚本定义的任何函数都可用于从阶段1调用。

答案 1 :(得分:1)

我刚刚在这个问题上遇到了问题,并且出于实际目的,其中的代码是&lt; %%&gt;代码内的代码执行&lt; script runat =“server”&gt; &LT; /脚本&GT;

函数和程序的声明似乎会受到IIS理解Classic ASP标记的这种差异的影响 - 至少我不使用条件代码加载“Server”。执行”。

我的服务器在Request.ServerVariables(“SERVER_SOFTWARE”)中运行Microsoft-IIS / 5.1。