关于ASP中脚本执行顺序的健全的讲解
原文地址:http://bbs.bccn.net/thread-225295-1-1.html
如果机房马上要关门了,或者你急着要和MM约会,请直接跳到第四个自然段。
以下叙述的脚本包括服务器端脚本和客户端的脚本,服务器端脚本指在服务器上运行的那部分脚本,比如常见的Response.Write显然是在服务器上运行的,服务器端脚本可以使用VBScript和JScript语言书写,在本文中全部使用VBScript,Jscript一个道理。
客户端脚本也可以认为包括VBScript和JavaScript两种语言,是在客户端浏览器上运行的脚本语言。比如我们访问一个网页,弹出一个消息框,这个就是用客户端脚本做的(alert, msgbox, etc),而且显然不是服务器端脚本能做到的。客户端脚本与服务器端脚本还有一个很大的区别(在IE、Firefox等浏览器中),就是客户端的脚本可以访问文档对象模型(DOM),可以操作页面中的对象(比如修改页面标题、修改一个div的innerHTML属性之类)。
首先我们先来了解一下ASP页面执行的流程
1.IIS找到ASP文件,提交给ASP引擎(一般是ASP.DLL)处理。
2.引擎打开这个ASP文件,找出<%和%>之间的内容,当然还有<script runAt="server">和对应的</script>之间的内容,这些内容称为脚本块。只有脚本块里的内容被引擎解析,其他内容不管,作为没有意义的字符插在脚本块之间。有必要说明一下的是,其实被解析的内容还不止这些,<!--#include ***-->类的服务器端包含文件也是由引擎包含进来并加以处理的。如果你读的程序比较多,你还会知道有的runAt属性标注为"Server"的<object>对象也是会被处理的,这里不做深入讨论。
3.引擎执行脚本块中的脚本,这些服务器端的脚本是作为一个整体被执行的,也就是说,可以写出如下的代码:
<%
Dim i
For i=1 to 5
%> Hello World!
<% Next %>
引擎并不会将这些脚本块分开解析,而使两个脚本块都发生语法错误。所以我们得到如下结论:并非所有非服务器脚本的代码都会被发送到客户端,有可能这段非服务器脚本的代码被脚本块限制了。服务器是一定不会操心客户端脚本的执行问题的,但是可以通过服务器端的脚本输出不同的客户端脚本。
4.最终引擎产生了一个文本流,或者说是脚本的执行结果,可以认为这是一个字符串,就是发送到客户端浏览器的网页的代码。客户端浏览器将页面显示出来,此时页面的源代码(源文件)是不包含服务器端的脚本的,但包含了服务器端脚本的执行结果(这是显然的)。
<% &h
相关文档:
用ASP编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在自己的社区里面实现类似网易虚拟社区提供的“每日一星”的功能,就要提供给网友上传照片的功能。上传图片文件到服务器可以使用各种免费的文件上传组件,使 ......
用ASP设计网站在线人数统计程序
在浏览网页的时侯,常常可以看见一些“当前网站上的人数是XXX人”的在线人数同计。如何用ASP来做一个呢?首先,分析一下它的做法,一般来说,这些线上人数统计都是指一个时段内的访客人数统计。比如(5分钟内,10分钟内)而这个时间的长短,是由设计者设定 ......
用ASP实现支持附件的EMail系统(3)
尝试发送邮件,但是失败了,请修改错误后重试!
<script language="javascript">
alert("您输入的收件组格式错误!\r正确的格式是:'gr:001'");
history.back();
</script>
<p>
<%
response.end
else
thegroup=(mid(trim(strfieldvalue),4))
end if
......
Windows7下IIS7的安装及ASP配置方法★
本文讲述了在Windows 7下如何安装IIS7,以及IIS7在安装过程中的一些需要注意的设置,以及在IIS7下配置ASP的正确方法。转载过程中不得以任何方式和方法用于商业用途,请注明出处。谢谢您的支持。祝您安装及调试成功。
注:本人安装的是Windows 7 RC 7100 32位中文旗舰版 。
在Window ......
option explicit
dim str1,str2
str1 ="order|||shiyang:100,mayang:200"
str2 = "book|||shuming:计算机,dingjia:100"
'声明2个全局对象
'放弃了一开始希望用数组存储的方式,那个虽然效率更高,但是需要自定义的array_pushobj函数,所以此处不做讨论了
dim objname_g
dim classname_g
'返回实体类
function getO ......