區別
表單的提交方式POST和GET有什麼區別 ?
解決思路:
兩者的區別需要通過提交表單後才看得出來,主要是在資料發送方式和接收方式上。
具體步驟:
Post和Get都是表單屬性Method的可選值,Method的預設值為Get,兩者的主要區別在於:
1.在用戶端,Get方式在通過URL提交資料,提交後在地址欄中的地址如圖1.4.3所示。
圖1.4.3 Get方式提交表單後的地址欄
而Post提交後地欄不變,如圖1.4.4所示。
圖1.4.4 Post方式提交表單後的地址欄不變
2.在伺服器端只能用Request.QueryString來擷取Get方式提交來的資料,用Post方式提交的資料只能用Request.Form來擷取:
<%@language="VBScript" Codepage="936"%>
<html>
<head>
<title> 表單提交方式測試</title>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</head>
<body>
<form method="post" action="<%=Request.ServerVariables("Script_Name")%>">
提交資料:
<input name="oStr" type="text">
<br>
提交方式:
<select name="select" >
<option value="Post" selected>Post</option>
<option value="Get">Get</option>
</select>
<br>
<input type="submit" name="Submit" value="提交">
</form>
<%
if Request("Submit")<>"" then
Response.Write "通過"&Request.ServerVariables("Request_Method")&"方式提交的資料為:"
if Request.ServerVariables("Request_Method")="GET" then
Response.Write Request.QueryString("oStr")
else
Response.Write Request.Form("oStr")
end if
end if
%>
</body>
</html>
注意:雖然兩種提交方式可以統一用Request("oStr")來擷取提交資料,但是這樣對程式效率有影響,不推薦使用。
特別提示
通過IIS運行本例代碼(用http://localhost/method.asp這種方式來瀏覽,有關IIS的安裝和配置,請參考第四部分),輸入所提交的資料,選擇Post方式提交,將看到圖1.4.4所示的效果。選擇Get方式提交,效果將如圖1.4.3所示。
特別說明
一般來說,盡量避免使用Get方式提交表單,因為有可能會導致安全問題。比如說在登陸表單中用Get方式,使用者輸入的使用者名稱和密碼將在地址欄中暴露無遺。但是在分頁程式中,用Get方式就比用Post好。本例中用到的表單的屬性解釋(ASP部分請參考第四部分):
Get把參數添加到action屬性指定的地址中,並以錨方式開啟。
Post通過HTTP post處理髮送資料。