经典asp中的<% %>和<script language=“vbscript” runat=“server”>有什么区别?

StackOverflow https://stackoverflow.com/questions/1447822

我在网上找不到太多文档

到目前为止,明显的区别似乎是你不能使用“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 标签的处理取决于指定的语言是否与页面的默认语言相同。

顺序是这样的:-

  1. 运行所有脚本 <script runat="server" 指定语言与默认语言不匹配的标签。这些是按文档顺序执行的。
  2. 运行默认脚本。这意味着对页面中存在静态内容的响应执行隐式写入(这些内容不在 runat="server" 标签或内部 <% %>)和任何中间代码 <% %> 显然再次按文档顺序。
  3. 运行在全局级别找到的任何代码 <script runat="server" 语言与默认脚本语言匹配的标记。

请注意,所有脚本在执行第 1 阶段之前都有一个初始解析,因此第 3 阶段运行的脚本定义的任何函数都可用于从第 1 阶段调用。

其他提示

我突然想到一个问题,在这个问题上,并用于实际用途,里面的代码<%%>标签的执行中的代码之前

函数和过程的声明似乎不会可在IIS理解经典ASP标记的方式这种差异的影响 - 至少我不使用条件代码加载与“服务器。执行”。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top