我有以下代码块在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中。
所以我的问题是,如何将我的本地变量的值发送到服务器?
答案 0 :(得分:1)
这是服务器端编程101,它有时会把人们赶出去,但是有很多很好的教程和文章可以帮助理解基础知识。
当从客户端收到请求时,IIS按以下顺序处理ASP文件:
如果网站上安装了ISAPI筛选器,则首先处理ISAPI筛选器。这适用于所有应用程序。
如果ASP应用程序在根目录中包含Global.asa文件,则会处理Global.asa。 Global.asa文件指定事件脚本并声明具有会话或应用程序范围的对象。他们不显示内容;相反,它们存储ASP应用程序全局使用的事件信息和对象。
在请求的ASP文件中,IIS将脚本块与静态HTML代码块分开,并在响应正文中保留静态代码。
IIS处理脚本块。脚本块可能包括事务处理,数据库访问调用或对COM组件的调用,在这种情况下,COM +会处理一些处理。
处理完ASP页脚本块后,会使用静态HTML代码将其输出注入响应正文。
- 醇>
将响应发送给客户端。
问题归结为步骤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