服務(wù)熱線
153 8323 9821
Request從幾個(gè)集合取數(shù)據(jù)是有順序的,從前到后的順序依次是
QueryString,Form,最后是ServerVariables。Request對(duì)象按照這樣的順序依次搜索這幾個(gè)集合中的變量,如果有符合的就中止,后面的就不管了。
現(xiàn)在我們來分析下你得問題.
假設(shè)有個(gè)頁面 test.asp?id=111
這里我們的頁面是用GET的方法.這時(shí)用request.querystring("id")與request("id")是一樣得,應(yīng)該如果不指定REQUEST得集合,首先就會(huì)從Querystring搜索.
而如果我們的頁面是用的是POST的方法發(fā)送數(shù)據(jù)給test.asp,那么用request.querystring("id")是不行的了(他只能取GET),而要用request.from("id"),而如果還用request("id")他也能取到數(shù)據(jù),但先檢測(cè)QUERYSTRING的值,顯然速度就慢了.
下面是個(gè)檢測(cè)的例子你可以看看:
<%
If
Request("submit")<>"" then
Response.Write "直接?。?quot;&
Request("username") & "<br>"
Response.Write "取Get:" &
Request.QueryString("username") & "<br>"
Response.Write "取Post:"
& Request.Form("username") & "<br>"
End if
%>
<form
name=form1 action="" method=post>
<input type=test name="username"
value="postuser">
<input type=submit name="submit"
value="test">
</form>
養(yǎng)成好的習(xí)慣,記得在request后面加上集合的名字
——————————————————————————————————————————————————
Request.QueryString["id"]
只能讀取通過地址欄參數(shù)傳遞過來的名為id的參數(shù)。
Request["id"]是一個(gè)復(fù)合功能讀取函數(shù)。
它的優(yōu)先級(jí)順序?yàn)?br />
QueryString
> Form > Cookies > ServerVariables
也就是說,如果存在名為id的地址欄參數(shù),Request[
"id" ] 的效果和 Request.QueryString["id"]
是樣的。
如果不存在名為id的地址欄參數(shù),Request.QueryString["id"]將會(huì)返回空,但是Request[ "id"
]會(huì)繼續(xù)檢查是否存在名為id的表單提交元素,如果不存在,則繼續(xù)嘗試檢查名為id的Cookie,如果不存在,繼續(xù)檢查名為id的服務(wù)器環(huán)境變量。它將最多做出4個(gè)嘗試,只有四個(gè)嘗試都失敗,才返回空。
以下是Request[
"id" ]的內(nèi)部實(shí)現(xiàn)代碼:
public string this[string key]
{
get
{
string str =
this.QueryString[key];
if (str != null)
{
return str;
}
str =
this.Form[key];
if (str != null)
{
return str;
}
HttpCookie
cookie = this.Cookies[key];
if (cookie != null)
{
return cookie.Value;
}
str =
this.ServerVariables[key];
if (str != null)
{
return str;
}
return
null;
}
}