淺談ASP中Request對像獲取客戶端數據的順序 - 中國WEB開發者網絡 (http://www.webasp.net) -- 技術教程 (http://www.webasp.net/article/) --- 淺談ASP中Request對像獲取客戶端數據的順序 (http://www.webasp.net/article/17/16962.htm) |
| -- 作者:未知 -- 發佈日期: 2005-03-14 |
| 在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=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> 轉自: http://www.contnew.com/tech/develop/asp/2004/10/18_413537_01.html |
| webasp.net |