当前位置导航:炫浪网>>网络学院>>网页制作>>ASP教程

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

学习ASP,最重要的就是要掌握ASP内置的六大对象。下面我们继续通过实例学习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>
  </BO
相关内容
赞助商链接