Request.Form與Request.QueryString的比較與使用說明

  • 100697
  • 0
  • ASP
  • 2017-04-10

摘要:Request.Form與Request.QueryString的比較與使用說明

Request.Form與Request.QueryString的比較與使用說明

當有資料要傳給某個asp來處理時,有幾個方式可以運作
1.Session
2.Form Submit
3.QueryString

Session:可以在IIS中的專案(虛擬目錄)下運作,並且可以跨有專案下的所有asp,不過這個不在我們這篇的討論範圍
我們還是來看一下我們這篇的討論範圍QueryString與Form Submit吧
=================================================================================
---------------------------------------------------------------------------------
QueryString:
使用QueryString的方式其實是最簡單的。
他的方法就是在超鏈結啟動某個asp的時候,在網址的部分加上變數以及要傳的資料
舉個例子就清楚多了
例如:

當我們要啟動一個【aaa.asp】的時候
超鏈結會下【http://xxx.xxx.xxx/專案名稱/aaa.asp】
假設我們要傳兩個變數【a】【b】,而變數的值分別是

 

a=123
b=456

那麼要用QueryString的方式來傳給aaa.asp要怎麼用呢
其實粉簡單:我們已下把【http:/xxx.xxx.xxx/專案名稱/】省略,這樣看起還會清楚些 

aaa.asp?a=123&b=456

方法就是再aaa.asp後面
第一個參數前加上【?】,第二個以後的參數用【&】開頭
這樣講解後是否簡單許多了

所以如果要多傳一個參數【c=789】要怎麼做呢
aaa.asp?a=123&b=456&c=789

在知道如何傳QueryString的參數後,接著來看asp要如何接收這樣的參數值
在aaa.asp中
 

<%
a=Request.QueryString("a").Item
b=Request.QueryString("b").Item
c=Request.QueryString("c").Item
%>

接收QueryString的參數就是這樣簡單
 


 

接著來講一下如果要用Form Submit來傳送要如何做
所謂的Form(表單)就是一個可以填寫、勾選資料的表格
要用Form把東西送出,就需要在網頁中(不限定asp唷,不論是html,htm,jsp,php,aspx....等都可以)
安排要送出的表單<FORM action="" method=POST id=form1 name=form1></FROM>
那麼在Form中可以放哪些物件把資料送出呢
屬於Form的物件有以下
text:
    用於輸入單行文字
    <INPUT type="text" id=text1 name=text1>
password:
    用於輸入密碼
    <INPUT type="password" id=password1 name=password1>
textarea:
    用於輸入多行、大批文字
    <TEXTAREA rows=2 cols=20 id=textarea1 name=textarea1></TEXTAREA>
file:
    用於上傳檔案時的挑選
    <INPUT type="file" id=file1 name=file1>
checkbox:
    用於多選的核選方塊
    <INPUT type="checkbox" id=checkbox1 name=checkbox1>
radio:
    用於單選的核選方塊
    <INPUT type="radio" id=radio1 name=radio1>
select:
    下拉式選單
    <SELECT id=select1 name=select1>
    <OPTION></OPTION>
    </SELECT>
submit:
    用於送出表單的內容
    <INPUT type="submit" value="Submit" id=submit1 name=submit1>
reset:
    用於清除表單更新,還原表單初始狀態
    <INPUT type="reset" value="Reset" id=reset1 name=reset1>

而Form的傳送方式也有兩種
我們來看一下FORM的語法
<FORM action="" method=POST id=form1 name=form1></FROM>
其中的method代表傳送的方式
POST:傳統Form的傳送方式
Get:用QueryString的方式來做Form的傳送
所以當我們的Method=POST時
送出的資料不會在網址列上看到
但是如果改成get就會看到網址列上各相關物件的資料變成QueryString的參數與資料

而如果要指定表單(Form)送給哪個asp
就要設定在action這個參數上
例如要送給aaa.asp的話
那麼就
<FORM action="aaa.asp" method=POST id=form1 name=form1></FROM>
 


知道了Form怎麼設定,要用哪些物件後,接著就來了解asp怎麼承接Form送過來的資料
假設有個Form裡面有兩個text分別是text1,text2如下
 

<FORM action="aaa.asp" method=POST id=form1 name=form1>
<INPUT type="text" id=text1 name=text1><br>
<INPUT type="text" id=text2 name=text2><br>
<INPUT type="submit" value="Submit" id=submit1 name=submit1>
</FROM>

那麼承接的aaa.asp要如何承接呢
 

<%
text1=Request.Form("text1").Item
text2=Request.Form("text2").Item
%>

上面的參數名稱,是Form的物件的Name
Request.Form("[Form物件的Name]").Item
 


另外有一種運用
例如我有數個資料讓人家勾選,可多選(checkbox)
那麼如果每個checkbox都是相同的name要怎麼承接呢
看看以下的例子
 

<FORM action="aaa.asp" method=POST id=form1 name=form1>
<%For y = 1 to 10%>
<INPUT type="checkbox" id=chkId name=chkId value="<%=y%>"><%=y%><br>
<%Next%>
<INPUT type="submit" value="Submit" id=submit1 name=submit1>
</FROM>

這種例子,是多選,並且有打勾的才是所要的
承接的部份要怎麼做呢,請看以下
 

<%
Dim ChkId
ChkCnt=Request.Form("chkId").Count
ReDim ChkId(ChkCnt)
For y = 1 to CHkCnt
    ChkId(y) = Request.Form("chkId").Item(y)
Next
%>

用一個陣列來承接,並且依照勾選的數量(Request.Form("chkId").Count)來指定陣列的大小
最後把值放入陣列中

 


此外也可搭配QueryString在Post Form上
舉個例子就清楚了
 

<FORM action="aaa.asp?a=123" method=POST id=form1 name=form1>
<INPUT type="text" id=text1 name=text1><br>
<INPUT type="submit" value="Submit" id=submit1 name=submit1>
</FROM>

這個例子中,Form的Action中用了QueryString傳了a=123
另外text1則是有使用者輸入
承接的部份
 

<%
a=Request.QueryString("a").Item
text1=Request.Form("text1").Item
%>

這樣是否比較出QueryString與Form的不同,以及他們各自的使用方式呢
希望對大家有幫助
 

 


以下是簽名:


Microsoft MVP
Visual Studio and Development Technologies
(2005~2019/6) 
topcat
Blog:http://www.dotblogs.com.tw/topcat