重引导用户到另一个主页位置
在很多场合下,你需要引导用户到另一个主页上,例如,用户注册单没有填写完全就进行了提交,那么提交程序会自动将用户返回到注册页等等。
在Active Server Pages中有一个非常简单的方法了来处理,那就是Response.Redirect方法,看下面这个例子:
<%
IF Request.Form(“UserName”)=“” THEN Response.Redirect”register.asp”
%>
<HTML>
<HEAD><TITLE>注册提交结果</TITLE></HEAD>
<BODY>
谢谢您、<%=Request.Form(“UserName”)%>注册迈至科网络教程示例。
</BODY>
</HTML>
假设一个用户没有填写姓名就提交了注册表,那么第一个脚本的判断就会将用户重新引导回注册页面。
你必须在浏览器显示任何文本前使用Response.Redirect方法,最好是在<HTML>标记之前进行使用,否则就只能使用Buffer输出(参见14章有关小节)。
你可以利用Response.Redirect方法来指向任何合法的网址,无论它是HTML主页还是Active Server Pages甚至Cold Fusion等,也无论它处于当前服务器还是局域网甚至广域网上的任何一台任何操作系统和HTTP Server的服务器(甚至是没有Active Server Pages的也可以)。其实执行过程是这样的,还记得前面提到的状态码吗?当Response.Redirect方法执行后,服务器的响应是发送回一个302 Object Moved的状态码,同时在Header上添加Location和重定向的URL地址,浏览器接受后就自动转向了新的地址。
注意
其实Response.Redirect”URL”就等效于下面的两行:
<%
Response.Status=“302 Object Moved”
Response.AddHeader”Location”,”URL”
%>
如果想要了解有关Header各种字段含义,请参阅本书附录A“ASP对象及组件快速参考”。
不过现在,这种操作并不顺利,老版本的浏览器通常无法处理这种状态码,更糟的是,新的浏览器诸如NetScape4.0也无法自动响应,而是会显示如图15.5所示信息。
图15.5 服务器重定向结果
这显然是站点制作人所不愿意看到的,用户也会很不习惯,所以我们推荐下面的方法: