经典asp中的<% %>和<script language=“vbscript” runat=“server”>有什么区别?
-
11-09-2019 - |
题
我在网上找不到太多文档
到目前为止,明显的区别似乎是你不能使用“script”标签混合 html 和 vbscript
例如,这是可以的
<% public sub display_literal() %> literal <% end sub %>
但使用 script 标签你应该
<script language="vbscript" runat="server"> public sub display_literal2() response.write "literal2</br>" end sub </script>
在本页
http://www.newobjects.com/pages/ndl/alp/asp-struct.htm
它说
在经典 ASP 中,用页面的默认脚本语言编写的脚本(即其次执行 <% %> 标签所采用的语言 - 例如<% %> 标记中的所有脚本代码在所有 <SCRIPT RUNAT=SERVER ...> 脚本之后初始化。
但我做了一些测试,但无法验证......
我这么问是因为我有一个脚本(我现在手边没有),使用 <% %> 给了我一个错误,将其更改为 <script> 标签解决了问题,但我想知道为什么....
无论如何,我想我们应该使用 <script> 标签来调用从 <% %> 标签调用的函数和过程......正确的?
解决方案
首先,您需要了解服务器端的方式存在差异 script
标签的处理取决于指定的语言是否与页面的默认语言相同。
顺序是这样的:-
- 运行所有脚本
<script runat="server"
指定语言与默认语言不匹配的标签。这些是按文档顺序执行的。 - 运行默认脚本。这意味着对页面中存在静态内容的响应执行隐式写入(这些内容不在
runat="server"
标签或内部<% %>
)和任何中间代码<% %>
显然再次按文档顺序。 - 运行在全局级别找到的任何代码
<script runat="server"
语言与默认脚本语言匹配的标记。
请注意,所有脚本在执行第 1 阶段之前都有一个初始解析,因此第 3 阶段运行的脚本定义的任何函数都可用于从第 1 阶段调用。
其他提示
我突然想到一个问题,在这个问题上,并用于实际用途,里面的代码<%%>标签的执行中的代码之前
函数和过程的声明似乎不会可在IIS理解经典ASP标记的方式这种差异的影响 - 至少我不使用条件代码加载与“服务器。执行”。
我的服务器运行Microsoft-IIS /在Request.ServerVariables 5.1( “SERVER_SOFTWARE”)。
不隶属于 StackOverflow