學習ajax技術的時候,很多同學對於ajax中get與post請求總是疑問不解,為了給學員解決疑問,現將授課中對get與post的請求的總結髮表於學生大本營中,希望能給你帶來協助.
在ajax入門詳解中我也簡單的介紹了它們之間的使用區別,為了使學員能夠徹底的明白,現將如授課中的總結髮表如下。
一、get()和post()基本區別
1.get 是把參數資料隊列加到提交表單的ACTION屬性所指的URL中,值和表單內各個欄位一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內各個欄位與其內容放置在HTML HEADER內一起傳送到ACTION屬性所指的URL地址。使用者看不到這個過程。
2.對於get方式,伺服器端用Request.QueryString擷取變數的值,對於post方式,伺服器端用Request.Form擷取提交的資料。兩種方式的參數都可以用Request來獲得。
3.get傳送的資料量較小,不能大於2KB。post傳送的資料量較大,一般被預設為不受限制。但理論上,因伺服器的不同而異。
4.get安全性非常低,post安全性較高。
5.<form method="get" action="a.asp?b=b">跟<form method="get" action="a.asp">是一樣的,也就是說,method為get時action頁面後邊帶的參數列表會被忽視;而<form method="post" action="a.asp?b=b">跟<form method="post" action="a.asp">是不一樣的。
二、談Ajax的Get和Post的區別
1.Get方式
用get方式可傳送簡單資料,但大小一般限制在1KB下,資料追加到url中發送(http的header傳送),也就是說,瀏覽器將各個表單欄位元素及其資料按照URL參數的格式附加在請求行中的資源路徑後面。另外最重要的一點是,它會被用戶端的瀏覽器緩衝起來,那麼,別人就可以從瀏覽器的記錄中,讀取到此客戶的資料,比如帳號和密碼等。因此,在某些情況下,get方法會帶來嚴重的安全性問題。
Ajax發送請求:如果是get請求send(參數)參數:必須是null或xhr.send();
get請求就不必要設定 xhr.setRequestHeader(header,value)
備忘:如果xhr.send(參數);參數不為空白情況下,在某些瀏覽器中會自動轉換成post請求方式 您可以通過request.getMethod();方法擷取請求的方式
執行個體:
function getAjax(){
//擷取xhr對象
var xhr = getXhr();
//規定請求類型
xhr.open("get","main.jsp?username=123",true);
//發送請求
xhr.send();
//處理伺服器響應事件
xhr.onreadystatechange = function (){
//判讀是否處理完畢 與判讀伺服器是否處理成功!
if(xhr.readyState==4 && xhr.status==200){
alert(xhr.responseText);
}
}
}
}
使用get方式需要注意