Request.Form 和 Request.QueryString 都是用來存放用戶端在表單填入的資訊。若表單的傳輸方式是 post,則我們可在 ASP 程式碼內以下列方式讀出表單的輸入值:
輸入資料 = Request.Form("欄位名稱")
若表單的傳輸方式是 get,則我們可用下列方式讀出表單輸入值:
輸入資料 = Request.QueryString("欄位名稱")
事實上,無論是 post 或 get,只要欄位名稱不重複,我們都可以用下列簡寫方式讀出表單的輸入值:
輸入資料 = Request("欄位名稱")
這是因為 Request("欄位名稱") 在未給定 Collection 時,會嘗試先讀取 Request.QueryString("欄位名稱"),若成功,則停止;若失敗,則會再嘗試讀取 Request.Form("欄位名稱")。
下列範例說明如何經由 Request.Form 或 Request.QueryString 取得表單資料,你可以選用不同的傳輸方式(get 或是 post),並檢視由 ASP 程式碼讀取的表單輸入值,範例如下:
上述範例的原始檔如下:
在上述範例中,我們可以觀察到下列事項:
- 如果經由 get 送出:
- 網址列會列出表單相關的選項
- 原先 action 網址所附加的選項(xxx=yyy&aaa=bbb)會消失
- 如果經由 post 送出:
- 網址列不會列出表單相關的選項
- 原先 action 網址所附加的選項(xxx=yyy&aaa=bbb)不會消失
- 由此可知,post 和 get 可以以此方式來並行
如果你的欄位名稱在表單中有所重複,那麼可用下列方法讀出:
Request.QueryString(name)(index)
或
Request.Form(name)(index)
其中
- name:欄位名稱
- index:欄位索引值,從 1 至 Request.Form(name).Count
若有重複欄位,但未採用 index 來指定所要讀取的值時,則 ASP 會讀到多個值所形成的字串,其中每一個值都以逗點分開。例如,下列網頁是執行
example/request/parseQueryString.asp?xyz=777&xyz=888&xyz=999&abc=111&abc=222&pqr=333
的結果:
上述範例的原始檔如下:
JScript 程式設計與應用:用於伺服器端的 ASP 環境