在 ASP 中,有兩個很常用的集合,一個是 Request.QueryString,另一個是 Request.Form。這兩個集合可以獲取 HTML 表單(HTML Forms) 提交的信息。
有關 HTML 表單,請參見 HTML 教程中的 HTML表單 一章。
HTML 表單中的 method 有兩種,一種是 get,另外一種是 post。當 HTML 表單的 method="get" 時,可以用 Request.QueryString 來獲取表單提交的信息。
以下是一個讓用戶輸入姓名的 HTML 表單示例。
<form action="http://www.webjx.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://www.webjx.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個值。