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 2008-06-14 11:05  topcat  阅读(1629)  评论(1编辑  收藏  举报