【问题标题】:what's the difference between <% %> and <script language="vbscript" runat="server"> in classic asp?经典asp中 <% %> 和 <script language="vbscript" runat="server"> 有什么区别?
【发布时间】:2010-11-29 16:31:40
【问题描述】:

我在网上找不到太多文档

到目前为止,明显的区别似乎是你不能使用“script”标签混合html和vbscript

例如,这样就可以了

文字 &lt% 结束子 %>

但你应该使用脚本标签

公共子 display_literal2() response.write "literal2" 结束子 脚本>

在这个页面上

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

它是这么说的

在经典 ASP 中,以页面的默认脚本语言(即 标记假定的语言)编写的脚本是第二个执行的 - 例如 标记中的所有脚本代码在所有

但我做了几个测试,但无法验证...

我问是因为我有一个脚本(我现在手头没有)使用 给我一个错误,将其更改为

无论如何,我想我们应该将

【问题讨论】:

  • 我的印象是它们不应该真的混在一起。

标签: asp-classic vbscript runatserver


【解决方案1】:

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

顺序是这样的:-

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

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

【讨论】:

    【解决方案2】:

    我刚刚在这个问题上遇到了一个问题,出于实际目的, 标记内的代码 执行 内的代码之前.

    函数和过程的声明似乎不会受到 IIS 理解经典 ASP 标记方式的这种差异的影响——至少因为我不使用“Server.执行”。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-02
      • 2010-11-25
      • 2011-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多