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的不同,以及他们各自的使用方式呢
希望对大家有帮助
![]() Microsoft MVP ASP/ASP.NET |
![]() topcat |