AJAX中get和post請求詳解
阿新 • • 發佈:2019-01-02
一、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安全性較高。
二、談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安全性較高。
二、談Ajax的Get和Post的區別
用get方式可傳送簡單資料,但大小一般限制在1KB下,資料追加到url中傳送(http的header傳送),也就是說,瀏覽器將各個表單欄位元素及其資料按照URL引數的格式附加在請求行中的資源路徑後面。另外最重要的一點是,它會被客戶端的瀏覽器快取起來,那麼,別人就可以從瀏覽器的歷史記錄中,讀取到此客戶的資料,比如帳號和密碼等。因此,在某些情況下,get方法會帶來嚴重的安全性問題。
Ajax傳送請求:如果是get請求send(引數)引數:必須是null或xhr.send();
GET 請求
一個簡單的 GET 請求:
xmlhttp.open("GET","demo_get.asp",true);
xmlhttp.send();
在上面的例子中,您可能得到的是快取的結果。
為了避免這種情況,請向 URL 新增一個唯一的 ID:
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true);
xmlhttp.send();
如果您希望通過 GET 方法傳送資訊,請向 URL 新增資訊:xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true); xmlhttp.send();
get請求就不必要設定 xhr.setRequestHeader(header,value)
備註:如果xhr.send(引數);引數不為空情況下,在某些瀏覽器中會自動轉換成post請求方式 您可以通過request.getMethod();方法獲取請求的方式 與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。
然而,在以下情況中,請使用 POST 請求:
- 無法使用快取檔案(更新伺服器上的檔案或資料庫)
- 向伺服器傳送大量資料(POST 沒有資料量限制)
- 傳送包含未知字元的使用者輸入時,POST 比 GET 更穩定也更可靠
POST 請求
一個簡單 POST 請求:
xmlhttp.open("POST","demo_post.asp",true); xmlhttp.send();
如果需要像 HTML 表單那樣 POST 資料,請使用 setRequestHeader() 來新增 HTTP 頭。然後在 send() 方法中規定您希望傳送的資料:
xmlhttp.open("POST","ajax_test.asp",true);
xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
xmlhttp.send("fname=Bill&lname=Gates");
例項:
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);
}
}
}
}