明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

淺談ASP中Request對象取得客戶端數(shù)據(jù)的順序

[摘要]在ASP中Request對象是獲取客戶端提交數(shù)據(jù)的一個(gè)很重要的對象,大家對它也是非常熟悉了。雖然如此,還是經(jīng)常有人問我下面的幾種寫法有什么不同,到底應(yīng)該怎么寫?strMessage = Reques...
在ASP中Request對象是獲取客戶端提交數(shù)據(jù)的一個(gè)很重要的對象,大家對它也是非常熟悉了。

雖然如此,還是經(jīng)常有人問我下面的幾種寫法有什么不同,到底應(yīng)該怎么寫?
strMessage = Request("msg")
strMessage = Request.Form("msg")

而且,我也看過好多人寫的代碼,一律都是Request("")的寫法,當(dāng)然這樣的寫法并沒有什么錯(cuò)。

只是大家應(yīng)該注意Request對象有幾個(gè)集合來獲取客戶端提交的數(shù)據(jù),一般常用的是QueryString,Form和ServerVariables。

而不管對于哪種集合其實(shí)都是可以通過Request("")這樣直接取得的,這里就有一個(gè)問題,如果Get方式和Post方式提交了同樣的一個(gè)變量,比如username=cqq,那么你用Request("username")取出來的到底是Get過來的數(shù)據(jù)還是Post過來的數(shù)據(jù)呢?

所以,問題到了這里,大家就應(yīng)該想到了, Request從這幾個(gè)集合取數(shù)據(jù)是有順序的,從前到后的順序依次是 QueryString,Form,最后是ServerVariables。Request對象按照這樣的順序依次搜索這幾個(gè)集合中的變量,如果有符合的就中止,后面的就不管了。 所以上面的例子Request("username")取到的實(shí)際是Get方法提交的數(shù)據(jù)。

所以為了提高效率,減少無謂的搜索時(shí)間,同時(shí)也是為了程序的規(guī)范,建議大家還是用Request.集合的方式更好一點(diǎn),比如Request.Form("username")。

下面是一個(gè)測試?yán)樱峤灰院,大家可以直接在地址后面加??username=test 來測試:
<%
If Request("submit")<>"" then
Response.Write "直接。"& 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>