ASP中Request對象獲取客戶端數據的順序(容易忽略)
2024-05-04 11:03:01
供稿:網友
在ASP中Request對象是獲取客戶端提交數據的一個很重要的對象,大家對他也是非常熟悉了。雖然如此,還是經常有人問我下面的幾種寫法有什么不同,到底應該怎么寫?
strMessage = Request("msg")
strMessage = Request.Form("msg")
而且,我也看過好多人寫的代碼,一律都是Request("")的寫法,當然這樣的寫法并沒有什么錯。
只是大家應該注意
Request對象有幾個集合來獲取客戶端提交的數據,一般常用的是QueryString,Form和ServerVariables。
而不管對于哪種集合其實都是可以通過Request("")這樣直接取得的,這里就有一個問題,如果
Get方式和Post方式提交了同樣的一個變量,比如username=cqq,那么你用Request("username")
取出來的到底是Get過來的數據還是Post過來的數據呢?
所以,問題到了這里,大家就應該想到了, Request從這幾個集合取數據是有順序的,從前到后
的順序依次是 QueryString,Form,最后是ServerVariables。Request對象按照這樣的順序依次搜索
這幾個集合中的變量,如果有符合的就中止,后面的就不管了。 所以上面的例子Request("username")
取到的實際是Get方法提交的數據。
所以為了提高效率,減少無謂的搜索時間,同時也是為了程序的規范,建議大家還是用Request.集合的
方式更好一點,比如Request.Form("username")。
下面是一個測試例子,提交以后,大家可以直接在地址后面加上 ?username=aaa 來測試:
<%
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>
您可能感興趣的文章:
javascript asp教程第八課--request對象Asp.net內置對象之Request對象(概述及應用)Asp.net內置對象之Server對象(概述及應用)Asp.net response對象與request對象使用介紹ASP.NET 使用application與session對象寫的簡單聊天室程序ASP.NET中Application全局對象用法實例淺析ASP.NET中使用Application對象實現簡單在線人數統計功能ASP的Error對象知識簡析ASP基礎知識Command對象講解ASP基礎入門第六篇(ASP內建對象Request)