快精灵印艺坊 您身边的文印专家
广州名片 深圳名片 会员卡 贵宾卡 印刷 设计教程
产品展示 在线订购 会员中心 产品模板 设计指南 在线编辑
 首页 名片设计   CorelDRAW   Illustrator   AuotoCAD   Painter   其他软件   Photoshop   Fireworks   Flash  

 » 彩色名片
 » PVC卡
 » 彩色磁性卡
 » 彩页/画册
 » 个性印务
 » 彩色不干胶
 » 明信片
   » 明信片
   » 彩色书签
   » 门挂
 » 其他产品与服务
   » 创业锦囊
   » 办公用品
     » 信封、信纸
     » 便签纸、斜面纸砖
     » 无碳复印纸
   » 海报
   » 大篇幅印刷
     » KT板
     » 海报
     » 横幅

ASP讲座之二:读取通过表单发送的数据

学习ASP,最重要的就是要把握ASP内置的六大对象。事实上,在上一讲中,我们已经了解了Response对象(是吗?有没有搞错!),及Response对象中最常用的Write方式、Redirect方式和Expires属性。看到对象、方式、属性、集合、事件这些概念(俺一个都不识!),假如以前没接触过,智慧的您就不要管这些概念了,知道怎么用就行了,我的观点是刚开始要害在于临摹。下面我们继承通过实例学习Request对象,为了加深理解,务请运行这些程序看看输出结果。

一、 使用Request.ServerVariables获取环境变量,这部分内容很简朴,但获取的内容却很重要,如何获取?请看下例:
<%@ Language=VBScript %>
<HTML><BODY>
<% \\\'wuf8.asp
Response.Write "运行ASP文件的路径: " &_
Request.ServerVariables("Script_Name") & "<Br>"
Response.Write "返回content的数据长度: " &_
Request.ServerVariables("Content_Length") & "<Br>"
Response.Write "返回客户的IP地址: " &_
Request.ServerVariables("Remote_Addr") & "<Br>"
Response.Write "浏览器名: " &_
Request.ServerVariables("HTTP_USER_AGENT") & "<Br>"
Response.Write "返回主页实际物理路径: " &_
Request.ServerVariables("APPL_PHYSICAL_PATH") & "<Br>"
%>

<table colspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">环境变量名</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">内容</font></td>
</tr>
<tr>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
result1
</font></td>
<td bgcolor="f7efde" align=CENTER> <font style="ARIAL NARROW" size="2">
result2
</font></td></tr>
</table>
</BODY></HTML>
Now,你应该发现上一讲中的例程wuf2.asp原来是多么的easy!
注重:该程序的后面一部分HTML标记纯是为下面的例子作预备的,所以不要觉得希奇。那么,还有哪些环境变量呢?运行下面的例子就知道了(本程序删除了部分代码,最好去我站点下载源程序便于理解)。
<%@ Language=VBScript %>
<% ‘wuf9.asp
Option Explicit
Dim Sv
%>
<HTML><BODY>
<table colspan=8 cellpadding=5 border=0>
<tr>
<td align=CENTER bgcolor="#800000" width="109"> <font style="ARIAL NARROW" color="#ffffff" size="2">环境变量名</font></td>
<td align=CENTER width=459 bgcolor="#800000"> <font style="ARIAL NARROW" color="#ffffff" size="2">结果</font></td>
</tr>
<%
for each Sv In Request.ServerVariables
Response.Write "<tr>"
Response.Write "<td bgcolor=\\\'f7efde\\\' align=CENTER> <font style=\\\'ARIAL NARROW\\\' size=\\\'2\\\'>"
Response.Write Sv
Response.Write "</font></td>"
Response.Write "<td bgcolor=\\\'f7efde\\\' align=CENTER> <font style=\\\'ARIAL NARROW\\\' size=\\\'2\\\'>"
Response.Write Request.ServerVariables(Sv)
Response.Write "</font></td></tr>"
next
%>
</table>
</BODY></HTML>
这里使用了For…Each循环,用来列举一个集合中的所有元素。假如后半部分看不懂,请对照wuf8.asp,再瞧瞧运行结果,仔细体会一下(什么态度?)。

二、 通过表单向服务器传送数据(也可这样理解,服务器端如何读取客户端发送的数据)
做过主页,应该知道很多主页通常都使用Form表单让用户输入数据,然后通过“submit(提交)”按钮发送数据。From表单中的“method”有两种主要方式:POST和GET,而“action”后一般都是指定一个.cgi、.pl或.asp文件,今天我们要学习的就是假如编写这个.asp文件。
(一) 假如使用POST方式传送数据,则用Request.Form来读取数据。
先编辑如下一个wuf10.htm文件,供用户输入数据:
<html>
<body bgcolor="#FFFFFF">
<form method="post" action="wuf11.asp">
姓名: <input type="text" name="yourname"><br>
性别: <select name="gender">
<option>男</option>
<option>女</option>
</select> <br>
留言: <textarea name="message">您好!
注重多行文本的处理</textarea> <br>
兴趣(按住Ctrl键可多选):
<select name="hobby" multiple size="4">
<option>电脑</option>
<option>购物</option>
<option>电影</option>
<option>读书</option>
</select> <br>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
再编写一个wuf10.htm需用到的文件wuf11.asp收集数据:
<%@ Language=VBScript %>
<% \\\'wuf11.asp
Option Explicit
Response.Expires=0
Dim StrName, StrGender, StrM, StrMsg

StrName = Trim(Request.Form("yourname")) \\\'Trim函数用来除首尾空格
StrGender = Trim(Request.Form("gender"))
StrM = Trim(Request.Form("message"))
StrMsg = Replace(StrM,vbcrlf,"<Br>" & vbcrlf)
\\\' vbcrlf相称于回车符和换行符的组合。至于Replace函数,其作用就是将字符串StrM中的vbcrlf替换为"<Br>" & vbcrlf(请思索这个vbcrlf有什么用?查看输出文件的HTML源码就明白了),具体请参考VBScript帮助。
%>
<HTML><BODY>
姓名: <%= StrName%><Br><Br>
性别: <%= StrGender%><Br><Br>
留言: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>
实际上, "提交"按钮的值也被传递: <Br>
<%= Request.Form("Submit")%><Br><Br>

<% \\\'先把上面看懂, 有爱好再看看如何读取多个选项
Response.Write "共选择兴趣项数:" & Request.Form("hobby").Count & "<Br>"
Dim I
For I = 1 to Request.Form("hobby").Count
Response.Write Request.Form("hobby")(I) & "<Br>"
Next
%>
</BODY></HTML>
在这个的例子中,为了便于理解,我们使用了两个程序,实际上只使用一个程序也可以,假如有爱好请看下面的例程wuf12.asp,有助于加深对环境变量的理解。
<%@ Language=VBScript %>
<% \\\'wuf12.asp
Option Explicit
Response.Expires=0
Dim StrName, StrGender, StrM, StrMsg

If Request.ServerVariables("Content_Length") <> 0 Then
\\\'提交数据后,这个长度就不会是 0, 因此执行下面的语句, 将结果显示出来
\\\'下面一部分实际上是照搬 wuf11.asp

StrName = Trim(Request.Form("yourname"))
StrGender = Trim(Request.Form("gender"))
StrM = Trim(Request.Form("message"))
StrMsg = Replace(StrM,vbcrlf,"<Br>" & vbcrlf)
%>
<HTML><BODY>
姓名: <%= StrName%><Br><Br>
性别: <%= StrGender%><Br><Br>
留言: <Br><Br>
<%= StrM%><Br><Br>
<%= StrMsg%><Br><Br>

<%
Response.Write "共选择兴趣项数:" & Request.Form("hobby").Count & "<Br>"
Dim I
For I = 1 to Request.Form("hobby").Count
Response.Write Request.Form("hobby")(I) & "<Br>"
Next
%>
</BODY></HTML>

<%
Else
\\\'当第一次加载页面时,没有提交任何数据,故前面一部分并不执行,而是从这里开始
\\\'这也就是为什么会有两对 <HTML></HTML> 的原因
\\\'下面照搬 wuf10.htm 就行了
\\\'<form method="post" action="wuf11.asp"> 给用环境变量替换掉了, 其实完全相同
Response.Write "看看结果: " & Request.ServerVariables("Script_name") & "<Br>"
%>
<HTML><BODY>
<form method="post" action="<%= Request.ServerVariables("Script_name")%>">
姓名: <input type="text" name="yourname"><br>
性别: <select name="gender">
<option>男</option>
<option>女</option>
</select> <br>
留言: <textarea name="message">您好!
注重多行文本的处理</textarea> <br>
兴趣(按住Ctrl键可多选):
<select name="hobby" multiple size="4">
<option>电脑</option>
<option>购物</option>
<option>电影</option>
<option>读书</option>
</select> <br>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="Reset">
</form>
</BODY></HTML>
<%End If%>

(二)假如使用GET方式传送数据,则用Request.Querystring来读取数据。
先编辑如下一个wuf13.htm文件,供用户输入数据:
<html>
<body bgcolor="#FFFFFF">
<form method="get" action="wuf14.asp">
英文姓名: <input type="text" name="Ename"> <br>
中文姓名: <input type="text" name="Cname"><br>
性别: <select name="gender">
<option>男</option>
<option>女</option>
</select> <br>
<input type="submit" name="Submit" value="提交">
<input type="reset" name="Submit2" value="Reset">
</form>
</body>
</html>
再编写一个wuf13.htm需用到的文件wuf14.asp收集数据:
<%@ Language=VBScript %>
<% \\\'wuf14.asp
Option Explicit
Response.Expires=0
Dim StrCname, StrEname, StrGender

StrEname = Trim(Request.QueryString("Ename")) \\\'Trim函数用来除首尾空格
StrCname = Trim(Request.QueryString("Cname"))
StrGender = Trim(Request.QueryString("gender"))
%>
<HTML><BODY>
英文姓名: <%= StrEname%><Br><Br>
中文姓名: <%= StrCname%><Br><Br>
性别: <%= StrGender%><Br><Br>
看看提交的字符串: <Br>
<%= Request.ServerVariables("Query_String")%>
</BODY></HTML>
为了更好地理解这个程序,你最好先在浏览器中试试例程wuf13.htm的效果,看看输出的结果,你会发现地址栏中长长的字符串似曾相识,犹如在Yahoo搜索时看到的差不多。这时,你试着在地址栏中直接输入“http://localhost/wuf14.asp?Ename=Rose&Cname=李二&gender=女”,居然也得到了同样的结果。所以你可以这样看,wuf13.htm的结果就是得到了类似这样的一个带参数的链接。而Request.QueryString则是从http:// 地址的附加参数中读取各个数据。
实际上,当按“提交”按钮后,查询字符串(输入的数据)会以参数的形式附加到URL地址后(各参数间以“&”分隔),达到传递数据的目的。同时,注重浏览器中显示的查询字符串中没有中文,而是不熟悉的含百分号的乱码,这是因为进行了编码的缘故。最后,与前面相同,这两个程序也可合并为一个程序(例程wuf15.asp,需去我站点下载)。

几点说明:
1. 若使用POST方式提交数据,则Request.ServerVariables("Content_Length")>0。
若使用GET方式提交数据,则Request.ServerVariables("Query_String") <> ""。
2. 弄懂原理后,你完全可以在同一个ASP文件中混合使用Request.Form和Request.QueryString。
3. 假如在一个Form表单中,有几个按钮,你如何确定用户按了哪个按钮?假如注意的话,会发现例程wuf11.asp中有一句,“提交”按钮的值也被传送,而wuf13.htm中生成的查询字符串最后也可以找到类似的值。请注重:只有被按按钮的值被传送,而其他按钮的值为””,这就是判定依据(《中计报》InfoWeb网站有一篇类似文章)。
返回类别: 教程
上一教程: 单页面判定浏览器是否接受 COOKIES
下一教程: ASP+ACCESS莫名奇妙的SQL语句错误解决

您可以阅读与"ASP讲座之二:读取通过表单发送的数据"相关的教程:
· ASP讲座之九:ASP与数据库
· ASP讲座之八:ASP与数据库
· 如何在ASP中通过ODBC调用EXCEL中的数据
· ASP讲座之七:ASP与数据库
· ASP讲座之六:ASP与数据库
    微笑服务 优质保证 索取样品