首頁 >web前端 >前端問答 >ajax請求時post和get的差別是什麼

ajax請求時post和get的差別是什麼

WBOY
WBOY原創
2022-07-01 17:04:253525瀏覽

區別:1.get把參數資料佇列加到提交表單的ACTION屬性所指的URL中,而post是透過「HTTP post」機制,將表單內各個欄位與其內容放置在「HTML HEADER 「內一起傳送到ACTION屬性所指的URL位址;2、get方式,伺服器端用「Request.QueryString」取得變數的值,對於post方式,伺服器端用「Request.Form」取得提交的資料。

ajax請求時post和get的差別是什麼

本文操作環境:windows10系統、javascript1.8.5&&html5版、Dell G3電腦。

ajax請求時post和get的差別是什麼

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、跟是一樣的,也就是說,action頁面後邊帶的參數清單會被忽略;而跟是不一樣的。

另外

Get請求有以下功能:它會將資料加入到URL中,透過這種方式傳遞到伺服器,通常利用一個問號?代表URL位址的結尾與資料參數的開端,後面的參數每一個資料參數以「名稱=值」的形式出現,參數與參數之間利用一個連接符號&來區分。

Post請求有以下特性:資料是放在HTTP主體中的,其組織方式不只一種,有&連接方式,也有分割符方式,可隱藏參數,傳遞大批數據,比較方便。

總而言之:當我們在提交表單的時候我們通常用post方式,當我們要傳送一個較大的資料檔案時,需要用post。當傳遞的值只要用參數方式(這個值不大於2KB)的時候,用get方式即可。

所以對於ajax提交兩者用法自然就明了。

擴充知識:

那麼要如何選擇get和post呢?

get請求的目的是給予伺服器一些參數,以便從伺服器取得清單.例如:list.aspx?page=1,表示取得第一頁的資料

  • #如果呼叫是要檢索伺服器上的資料則使用get,另外需要注意的是,如果要檢索的值會隨時間和更新進程的改變而改變,則要在get呼叫中新增一個隨機數或者時間戳,這樣後面的呼叫才不會使用先前不正確的快取。與post相比,get更簡單也更快,而且在大部分情況下都能使用。

post請求的目的是向伺服器發送一些參數

  • #無法使用快取檔案(更新伺服器上的檔案或資料庫),使用post

  • 向伺服器發送大量資料(post沒有資料量限制),使用post

  • 傳送包含未知字元的使用者輸入時,post比get更穩定也更可靠

我們知道get的目的就如同其名字一樣是用來獲取資訊的。它旨在顯示出頁面上你要閱讀的資訊。瀏覽器會緩衝get請求的執行結果,如果同樣的get請求再次發出,瀏覽器就會顯示緩衝的結果而不是重新執行整個請求。這一流程不同於瀏覽器的處理過程,但是它是有意設計成這樣,使get調用更有效率。 get呼叫會檢索要顯示在頁面中的數據,資料不會再伺服器上被更改,因此重新請求相同資料的時候會得到相同的結果。

post方法應該用於需要更新伺服器資訊的地方。如某調用要更改保存在伺服器上的數據,而從兩個同樣的post調用返回的結果或許會完全不同,因為第二個post調用的值與第一個的值不相同,這是由於第一個呼叫已經更新了其中一些值。 post呼叫通常會從伺服器上取得回應而不是保持前一個回應的快取。

get請求

oBtn.onclick = function() {
var xhr = null;
try {
xhr = new XMLHttpRequest();
} catch (e) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
/*
1.缓存 在url?后面连接一个随机数,时间戳
2.乱码 编码encodeURI
*/
xhr.open('get','2.get.php?username='+encodeURI('刘伟')+'&age=30&' + new Date().getTime(),true);
xhr.send();
xhr.onreadystatechange = function() {
if ( xhr.readyState == 4 ) {
if ( xhr.status == 200 ) {
alert( xhr.responseText );
} else {
alert('出错了,Err:' + xhr.status);
}
}
}
}

post請求

oBtn.onclick = function() {
var xhr = null;
try {
xhr = new XMLHttpRequest();
} catch (e) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
xhr.open('post','2.post.php',true);
//post方式,数据放在send()里面作为参数传递
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//申明发送的数据类型
//post没有缓存问题
//无需编码
xhr.send('username=刘伟&age=30');
xhr.onreadystatechange = function() {
if ( xhr.readyState == 4 ) {
if ( xhr.status == 200 ) {
alert( xhr.responseText );
} else {
alert('出错了,Err:' + xhr.status);
}
}
}
}

【相關教學推薦:AJAX影片教學

#

以上是ajax請求時post和get的差別是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn