ASP中Request對象擷取用戶端資料的順序

來源:互聯網
上載者:User

在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>

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.