topcat姍舞之間的極度凝聚

分享...是知識累積的開始....(Microsoft ASP/ASP.NET MVP)


My Links

Blog Stats

News

搬家公告:
未來小喵的文章會以點部落為主。
http://www.dotblogs.com.tw/topcat/
小鋪也會同步貼過來。不過在排版上能會比較沒有兼顧到。歡迎舊雨新知多多支持。 有與小喵交換網址或者訂閱的人,也建議連到那邊去。



目前線上人數:

隨筆分類

每月文章

影像集

其他部落格

工具網站

技術論壇

線上教學

語言學習

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時
送出的資料不會在網址列上看到
但是如果改成post就會看到網址列上各相關物件的資料變成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的不同,以及他們各自的使用方式呢
希望對大家有幫助






posted on Wednesday, August 10, 2005 10:38 AM

Feedback

# re: Request.Form與Request.QueryString的比較與使用說明 8/18/2005 10:34 AM beta

你寫的是,目前dot net,系統全力大反攻,以期阻止類似linux系統的優勢,不知你能否給予建議,要專攻哪一個系統。


# re: Request.Form與Request.QueryString的比較與使用說明 8/22/2005 4:52 PM topcat

??
>>目前dot net,系統全力大反攻,以期阻止類似linux系統的優勢
我這篇好像沒提到這個...
^_^a
不過沒關係....

可以猜一下您在回答的那個問題
其實....
windows,.net,MSSQL是微軟體系....設備、軟體上比較貴,可是也在背後有比較好的支援(微軟的強大金錢支援!!)
一般的中大型企業還蠻喜歡微軟體系的,主要是有了問題,只要花的起錢,應該可以找到相關的解決方案

linux,php,MySQL則是以費用精簡為主要特色,這些大都可以找到免費的資源,目前中小企業偏好這類型,因為只需要準備好主機的硬體,其他的軟體部分幾乎都免費

至於建議專攻哪一個....小喵覺得....都可以學一學啦...如果是自己外包Case的Soho族,兩邊都有接觸才能夠廣泛的接到Case囉
而如果是個上班族,可以挑選一個來學,主要還是放在您未來工作上的需要是哪個,來專精他....畢竟....肚子是要顧的唷
^_^a





# re: Request.Form與Request.QueryString的比較與使用說明 9/2/2005 7:02 PM #在Request.QueryString传输中为何会丢失

在?后String?量id=655#???Request.QueryString?取??何?
?失#,只是?取655呢?

高手?,??忙解?一下了,先?了


# re: Request.Form與Request.QueryString的比較與使用說明 4/14/2007 5:21 PM stranger


這是一段我剛由此網頁學會的HTML語法

<form action="http://www.myweb.com.tw/cgi-bin/messpost" method="post">
<input name="OPT" type=HIDDEN value="TEST.B">
<body>

<div align="center" style="width: 334px">
<select opt="OPT1" size="1">
<option value="NM">姓名 </option>
<option value="ID">學號 </option>
</select>
<input name="SEARCHWORD" rows="1" size="30">
<br>
<input type="submit" name="Submit" value="開始查詢"></div>
</body>

如果我的物件, option 和 input 變數固定(列如:OPT1=ID, SEARCHWORD="12345"),並不需要由 From 給 user 輸入. 請問我該如何更改以上的語法?

麻煩會的人說明一下. Thanks!



# re: Request.Form與Request.QueryString的比較與使用說明 1/24/2008 11:29 AM b3245

常來這邊逛 獲益良多
我是從asp.net 2.0學起

最近公司要改asp寫的網頁
所以來到這邊再釐清一些東西

感謝大大


Post Feedback

Title:
Name:
Url:
驗證碼  
Comments: