輸入的表格
在表格向 Web 伺服器提交信息時,用戶的 Web瀏覽器請求用 HTML
標記的 ACTION 屬性所指定的 .asp 檔案(在前面的例子中,該檔案被稱為 Myfile.asp)。.asp 檔案包含了處理表格值(如顯示結果表或從資料庫查詢信息)的腳本。
可以通過三種途徑用 .asp 檔案收集 HTML表格的值
靜態的 .htm 檔案可以包含一個將其數值郵送給 .asp 檔案的表格。
.asp 檔案可以創建一個將其信息郵送給另一個 .asp 檔案的表格。
.asp 檔案可以創建一個將其信息郵送給自身的表格,即包含該表格的檔案。
前兩個方法的操作方式相同,當表格與網關程式互動時,除 ASP 之外,可以包含讀取和回響用戶選擇的命令。
創建一個包含表格定義且傳送信息給自身的 .asp 檔案較複雜,但卻是有很強功能的處理表格的方法。這一過程在驗證表格輸入中演示。
獲得表格輸入
ASPRequest對象提供了兩種集合,在很大程度上簡化了檢索附加在 URL 請求上的表格信息的任務。
集合
QueryString集合獲取作為跟在請求的 URL 的問號後面的文本傳遞給 Web 伺服器的值。通過使用 HTTP GET 方法或手工將表格的值添加到 URL,表格的值可以被附加在請求的 URL 之後。
例如,如果先前的表格示例使用 GET 方法 (ACTION = "GET") 且用戶鍵入Jeff、Smith和30,那么下面的 URL 請求將被傳送給伺服器:
http://scripts/Myfile.asp?firstname=Jeff&lastname=Smith&age=30&userstatus=new
Myfile.asp 包含下面的表格處理腳本:
Hello, <%= Request.QueryString("firstname") %> <%= Request.QueryString("lastname") %>. You are <%= Request.QueryString("age") %> years old.<%If Request.QueryString("userstatus") = "new user" then Response.Write"This is your first visit to this Web site!"End if %>
在這種情況下,Web 伺服器將返回下面的文本給用戶的 Web 瀏覽器:
Hello, Jeff Smith. You are 30 years old. This is your first visit to this Web site!
QueryString集合有一個可選參數,可用來訪問顯示在請求正文中的多個值中的一個。也可以使用Count屬性計算一個特殊類型的值的出現次數。
例如,表格包含一個多項目的列表框可以提交下面的請求:
http://list.asp?food=apples&food=olives&food=bread
您也可以使用下面的命令去對多個值計數:
Request.QueryString("food").Count
如果想顯示多個值的類型,List.asp 應包含下面的腳本;
<%Total = Request.QueryString("food").Count%><%For i = 1 to Total%> <%= Request.QueryString("food")(i) %>
<%Next%>上述腳本將顯示:applesolivesbread
Form 集合
當使用 HTTP GET 方法去向 Web 伺服器傳遞長而複雜的表格值時,將可能丟失信息。大多數的 Web 伺服器傾向於嚴格控制 URL 查詢字元串的長度,以便用 GET 方法傳送的冗長的表格值被截斷。如果您需要從表格傳送大量信息到 Web 伺服器,就必須使用 HTTP POST 方法。此法用於在 HTTP 請求正文中傳送表格數據,而且傳送的字元的個數可以無限多。也可以使用 ASPRequest對象的Form集合檢索用 POST 方法傳送的值。
Form集合與QueryString集合存儲數值的方式相同。例如,如果用戶用一長串名稱填充表格,您就可以用下面的腳本檢索這些名稱:
<% For i = 1 to Request.Form.Count %><% =Request.Form("names")(i) %><% Next %>
驗證表格輸入
一個好的表格處理腳本在處理數據前,應先驗證輸入表格的信息是否有效。驗證腳本可以檢驗用戶輸入到表格的信息類型是否正確。例如,如果您的 Web 站點包含一個表格,該表格允許用戶計算財務信息,那么在處理結果之前,需要驗證用戶確實輸入了數值信息而不是文本。
一個非常方便的驗證表格輸入的方法是創建一個向自身傳遞信息的表格。在這種情況下,.asp 檔案包含可獲取信息的表格。例如,下面的腳本通過向自身傳遞信息來驗證用戶是否在 "age" 表格欄位中輸入了數值:
<% If Isnumeric(Request.QueryString("Age")) then %>
Hello, your age is <%=Request.QueryString("age")%><%Else %>
Please enter a numerical age.<%End If %> Name: Age:
在這個例子中,腳本也在包含表格的同一 Verify.asp 檔案中。表格通過在 ACTION 屬性中指定 Verify.asp 向自身傳送信息。
您也可以創建客戶端腳本來檢驗用戶是否輸入了有效的信息。驗證用戶在 Web 瀏覽器上的輸入除了更迅速地向用戶提示表格項錯誤外,還可以減少 Web 伺服器的網路流量。下面的腳本運行在用戶的 Web 瀏覽器上,在將信息提交到 Web 伺服器之前,驗證用戶信息。