我在网上找不到太多文档
到目前为止,显而易见的差异似乎是你不能使用“脚本”标签混合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;中调用的函数和过程的标记标签......对吧?
答案 0 :(得分:10)
首先,您需要了解服务器端script
标记的处理方式有所不同,具体取决于指定的语言是否与页面的默认语言相同。
顺序是这样的: -
<script runat="server"
标记中的所有脚本,其中指定的语言与默认语言不匹配。这些按文档顺序执行。runat="server"
标记内或<% %>
内),以及文档顺序中<% %>
中的任何中间代码明显。<script runat="server"
标记中的全局级别的任何代码,其中语言与默认脚本语言匹配。请注意,所有脚本在执行阶段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。