在 ASP 中,有两个很常用的集合,一个是 Request.QueryString,另一个是 Request.Form。这两个集合可以获取 HTML 表单(HTML Forms) 提交的信息。
有关 HTML 表单,请参见 HTML 教程中的 HTML表单 一章。
HTML 表单中的 method 有两种,一种是 get,另外一种是 post。当 HTML 表单的 method="get" 时,可以用 Request.QueryString 来获取表单提交的信息。
以下是一个让用户输入姓名的 HTML 表单示例。
<form action="http://book.chinaz.com/" method="get">
请输入你的姓名:
<input type="text" name="yourname">
<input type="submit" value="提交">
</form>
该示例中,HTML 表单中使用的 method 为 get,指向 action 的网页是一个 .asp 文件,名字为 yourname.asp。以下是 yourname.asp 文件的源代码:
<html>
<head>
<title>姓名信息</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<p>你的姓名是:<%= Request.QueryString("yourname") %></p>
</body>
</html>
在这个 .asp 文件里,你可以看到最关键的一句代码是:
<p>你的姓名是:<%= Request.QueryString("yourname") %></p>
Request.QueryString 括号里的 "yourname" 对应于 HTML 表单中的 input 输入框的 name 值。
当使用 method="get" 提交表单信息时,用户可以从地址栏看到这些提交信息。
当 HTML 表单中 method = "post" 时,可以用 Request.Form 来获取 HTML 表单提交的信息。
以下是一个让用户输入姓名和密码的 HTML 表单示例。
<form action="http://book.chinaz.com/html/asdocs/html_tutorials/userpw.asp" method="post">
请输入你的姓名:<input type="text" name="yourname"><br>
请输入你的密码:<input type="password" name="yourpw"><br>
<input type="submit" value="提交">
</form>
该示例中,HTML 表单中使用的 method 为 post,指向 action 的网页是一个 .asp 文件,名字为 userpw.asp。以下是 userpw.asp 文件的源代码:
<html>
<head>
<title>用户信息</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<p>你的姓名是:<%= Request.Form("yourname") %></p>
<p>你的密码是:<%= Request.Form("yourpw") %></p>
</body>
</html>
在这个 .asp 文件里,你可以看到最关键的两句代码是:
<p>你的姓名是:<%= Request.Form("yourname") %></p>
<p>你的密码是:<%= Request.Form("yourpw") %></p>
Request.Form 括号里的 "yourname" 和"yourpw" 各对应于 HTML 表单中的两个 input 输入框的 name 值。
当使用 method="post" 提交表单信息时,用户不会从地址栏看到这些提交信息。
HTML表单中还有一些可供用户选择的表单控件,比如单选框 input type="radio",复选框 input type="checkbox",单选下拉框 select,复选下拉框 select multiple。
这些选择性的控件示例,请参见 HTML表单教程。在这些示例中,action 指向的那个 .asp 文件叫 choose.asp。以下是 choose.asp 文件的源代码:
<html>
<head>
<title>retrieve information from form controls(radio, checkbox, select) </title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
你选择了:<br>
<% For counter = 1 To Request.Form("fruit").Count
Response.Write Request.Form("fruit")(counter) & "<br>"
Next
%>
</body>
</html>
Request.Form 获取的是一个集合 (collection)。Request.Form 集合有两个参数,一个是 element,称做元素,对应 HTML表单控件的 name 值;第二个是 index,称做索引,表示 element 的第几个值,index 从1开始计数。
用 Request.Form(element)(index) 可以引用 Request.Form 集合中某个元素的某个值。
比如 Request.Form("fruit")(1),表示"fruit"元素中的第一个值,Request.Form("fruit")(2) 表示"fruit"元素中的第2个值。
用 Request.Form(element).Count,可以得到集合中某个元素的值的总数量。
比如 Request.Form("fruit").Count 为 3 的话,就表示 "fruit" 这个元素有3个值。