溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ajax請求時post和get的區(qū)別有哪些

發(fā)布時間:2022-07-02 10:00:06 來源:億速云 閱讀:151 作者:iii 欄目:web開發(fā)

今天小編給大家分享一下ajax請求時post和get的區(qū)別有哪些的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

區(qū)別:1、get把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,而post是通過“HTTP post”機制,將表單內(nèi)各個字段與其內(nèi)容放置在“HTML HEADER”內(nèi)一起傳送到ACTION屬性所指的URL地址;2、get方式,服務器端用“Request.QueryString”獲取變量的值,對于post方式,服務器端用“Request.Form”獲取提交的數(shù)據(jù)。

本文操作環(huán)境:windows10系統(tǒng)、javascript1.8.5&&html5版、Dell G3電腦。

ajax請求時post和get的區(qū)別

1、 get是把參數(shù)數(shù)據(jù)隊列加到提交表單的ACTION屬性所指的URL中,值和表單內(nèi)各個字段一一對應,在URL中可以看到。post是通過HTTP post機制,將表單內(nèi)各個字段與其內(nèi)容放置在HTML HEADER內(nèi)一起傳送到ACTION屬性所指的URL地址。用戶看不到這個過程。

2、 對于get方式,服務器端用Request.QueryString獲取變量的值,對于post方式,服務器端用Request.Form獲取提交的數(shù)據(jù)。兩種方式的參數(shù)都可以用Request來獲得。

3、get傳送的數(shù)據(jù)量較小,不能大于2KB。post傳送的數(shù)據(jù)量較大,一般被默認為不受限制。但理論上,因服務器的不同而異.

4、get安全性非常低,post安全性較高。

5、跟是一樣的,也就是說,action頁面后邊帶的參數(shù)列表會被忽視;而跟是不一樣的。

另外

Get請求有如下特性:它會將數(shù)據(jù)添加到URL中,通過這種方式傳遞到服務器,通常利用一個問號?代表URL地址的結尾與數(shù)據(jù)參數(shù)的開端,后面的參數(shù)每一個數(shù)據(jù)參數(shù)以“名稱=值”的形式出現(xiàn),參數(shù)與參數(shù)之間利用一個連接符&來區(qū)分。

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

總而言之:當我們在提交表單的時候我們通常用post方式,當我們要傳送一個較大的數(shù)據(jù)文件時,需要用post。當傳遞的值只需用參數(shù)方式(這個值不大于2KB)的時候,用get方式即可。

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

擴展知識:

那么如何選擇get和post呢?

get請求的目的是給予服務器一些參數(shù),以便從服務器獲取列表.例如:list.aspx?page=1,表示獲取第一頁的數(shù)據(jù)

  • 如果調用是要檢索服務器上的數(shù)據(jù)則使用get,另外需要注意的是,如果要檢索的值會隨時間和更新進程的改變而改變,則要在get調用中添加一個隨機數(shù)或者時間戳,這樣后面的調用才不會使用先前的不正確的緩存。與post相比,get更簡單也更快,并且在大部分情況下都能用。

post請求的目的是向服務器發(fā)送一些參數(shù)

  • 無法使用緩存文件(更新服務器上的文件或數(shù)據(jù)庫),使用post

  • 向服務器發(fā)送大量數(shù)據(jù)(post沒有數(shù)據(jù)量限制),使用post

  • 發(fā)送包含未知字符的用戶輸入時,post比get更穩(wěn)定也更可靠

我們知道get的目的就如同其名字一樣是用于獲取信息的。它旨在顯示出頁面上你要閱讀的信息。瀏覽器會緩沖get請求的執(zhí)行結果,如果同樣的get請求再次發(fā)出,瀏覽器就會顯示緩沖的結果而不是重新運行整個請求。這一流程不同于瀏覽器的處理過程,但是它是有意設計成這樣,使get調用更有效率。get調用會檢索要顯示在頁面中的數(shù)據(jù),數(shù)據(jù)不會再服務器上被更改,因此重新請求相同數(shù)據(jù)的時候會得到相同的結果。

post方法應該用于需要更新服務器信息的地方。如某調用要更改保存在服務器上的數(shù)據(jù),而從兩個同樣的post調用返回的結果或許會完全不同,因為第二個post調用的值與第一個的值不相同,這是由于第一個調用已經(jīng)更新了其中一些值。post調用通常會從服務器上獲取響應而不是保持前一個響應的緩存。

get請求

oBtn.onclick = function() {
var xhr = null;
try {
xhr = new XMLHttpRequest();
} catch (e) {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
}
/*
1.緩存 在url?后面連接一個隨機數(shù),時間戳
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方式,數(shù)據(jù)放在send()里面作為參數(shù)傳遞
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');//申明發(fā)送的數(shù)據(jù)類型
//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請求時post和get的區(qū)別有哪些”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。

AI