代码之家  ›  专栏  ›  技术社区  ›  opensas

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

  •  7
  • opensas  · 技术社区  · 15 年前

    我在网上找不到很多文件

    到目前为止,明显的区别似乎是您不能使用“script”标记混合HTML和VBScript

    例如,这是可以的

    <% public sub display_literal() %>
      literal
    &lt% 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中,以页面的默认脚本语言(即为<%%>标记假定的语言)编写的脚本是第二次执行的-例如,在所有<script runat=server…>脚本之后,将初始化<%%>标记中的所有脚本代码。

    但我做了一些测试,无法验证…

    我问是因为我有一个脚本(我现在没有),使用<%%>时出错,将其更改为<script>标记解决了问题,但我想知道为什么……

    不管怎样,我想我们应该对要从<%%>标记调用的函数和过程使用<script>标记…正确的?

    2 回复  |  直到 9 年前
        1
  •  10
  •   Sergey Sergey    9 年前

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

    命令如下:

    1. 在中运行所有脚本 <script runat="server" 指定语言与默认语言不匹配的标记。按文件顺序执行。
    2. 运行默认脚本。这意味着对页面中有静态内容的响应(不在 runat="server" 标签或内部 <% %> )任何介入的代码 <%%gt; 显然是按文件顺序。
    3. 在中找到的全局级别运行任何代码 <script runat=“服务器” 语言与默认脚本语言匹配的标记。

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

        2
  •  1
  •   Gerardo Lima    14 年前

    我刚刚在这件事上遇到了一个问题,出于实际目的,在<%%>标记内的代码 执行 在代码进入<script runat=“server”></script>之前。

    职能和程序的声明似乎 为了在理解经典ASP标记的方式上受到这种差异的影响,至少我不使用“server.execute”加载条件代码。

    我的服务器运行Microsoft IIS/5.1,如request.serverVariables(“服务器\u软件”)中所示。

    推荐文章