在vbscript中访问server-tags中的客户端变量

时间:2016-01-21 10:12:37

标签: vbscript asp-classic

我有以下代码块在asp页面中运行:

 <script language="VBScript">
    sub ok_onclick()

        dim localVariable
        localVariable= "hello"

        <%
        call serversideFunction(localVariable)
        %>        

    end sub

以下栏目

<% call ServerSideFunction(localVariable) %>

引发以下错误:

  

未处理的异常(&#39;变量未定义:&#39; localVariable&#39;&#39;)   发生在dllhost.exe [24184]

我注意到我无法将我的本地变量放在servercode-tags中。

所以我的问题是,如何将我的本地变量的值发送到服务器?

1 个答案:

答案 0 :(得分:1)

这是服务器端编程101,它有时会把人们赶出去,但是有很多很好的教程和文章可以帮助理解基础知识。

Classic ASP Architecture

图片取自MSDN - ASP Overview

  

引自MSDN - ASP Overview

     

当从客户端收到请求时,IIS按以下顺序处理ASP文件:

     
      
  1. 如果网站上安装了ISAPI筛选器,则首先处理ISAPI筛选器。这适用于所有应用程序。

  2.   
  3. 如果ASP应用程序在根目录中包含Global.asa文件,则会处理Global.asa。 Global.asa文件指定事件脚本并声明具有会话或应用程序范围的对象。他们不显示内容;相反,它们存储ASP应用程序全局使用的事件信息和对象。

  4.   
  5. 在请求的ASP文件中,IIS将脚本块与静态HTML代码块分开,并在响应正文中保留静态代码。

  6.   
  7. IIS处理脚本块。脚本块可能包括事务处理,数据库访问调用或对COM组件的调用,在这种情况下,COM +会处理一些处理。

  8.   
  9. 处理完ASP页脚本块后,会使用静态HTML代码将其输出注入响应正文。

  10.   
  11. 将响应发送给客户端。

  12.   

问题归结为步骤6.所有服务器端处理都在响应发送到客户端之前完成,因此在提供的示例中;

'Client-Side procedure
Sub ok_onclick()
  dim localVariable
  localVariable= "hello"
  <%
  'Server-Side code already processed before response
  'is returned to the client.
  Call serversideFunction(localVariable)
  %>        
End Sub

在发送客户端响应之前,serversideFunction()服务器端函数已经执行,因此永远不会知道是否存在localVariable

在这些情况下,您需要使用各种经过验证的技术(HTML表单,AJAX请求等)localVariable数据传递回服务器,这些技术都归结为通信{ {1}}或HTTP GET请求服务器可以解释和处理。

发送请求后,可以使用ASP Request Object获取数据并将其传递到服务器端变量。

HTTP POST

有用的链接