欢迎光临
我们一直在努力

ASP讲座之二:读取通过表单发送的数据-ASP教程,ASP应用

建站超值云服务器,限时71元/月

学习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网站有一篇类似文章)。

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » ASP讲座之二:读取通过表单发送的数据-ASP教程,ASP应用
分享到: 更多 (0)