1. 程式人生 > >ajax中get和post兩種請求的區別

ajax中get和post兩種請求的區別

Ajax(Asynchronous Javascript And XML)即非同步JavaScript和XML,通過在後臺與伺服器進行少量資料交換,AJAX 可以使網頁實現非同步更新;這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新(即區域性重新整理);而傳統的網頁(不使用 AJAX)如果需要更新內容,必須過載整個網頁頁面。

瞭解完定義後,就要使用ajax技術了,不過在使用之前我們要先了解請求時get和post的區別以及兩者各自在何時使用最為合適。

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.傳遞引數時

get方式:在請求時,要連帶傳送相關引數,將引數附加在URL上即可,例如:

<span style="font-size:18px;"> var urlAndqueryString = "yourApp?name=justin&age=30";
     xmlHttp.open("GET", urlAndqueryString); 
     xmlHttp.send(null);
</span>
      post方式:在請求時,要連帶傳送相關引數,將要傳送的引數塞到send()中即可,例如:
<span style="font-size:18px;">var url = "yourApp";
    var queryString = "name=justin&age=30";
    xmlHttp.open(“POST", url);
    xmlHttp.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
    xmlHttp.send(queryString);</span>

6.通過URL傳送請求時,,GET 方式把表單內容放在前面的請求頭中,也就是在位址列中能夠看到傳遞的引數;而 POST 則把這些內容放在請求的主體中了,同時 POST 中把請求的 Content-Type 頭設定為 application/x-www-form-urlencoded,即將傳遞的引數放在了請求的檔案中,位址列不可見;但兩者傳送的正文都是一樣的。

7.Get請求有如下特性:

它會將資料新增到URL中,通過這種方式傳遞到伺服器,通常利用一個問號?代表URL地址的結尾與資料引數的開端,後面的引數每一個數據引數以“名稱=值”的形式出現,引數與引數之間利用一個連線符&來區分。

Post請求有如下特性:

資料是放在HTTP主體中的,其組織方式不只一種,有&連線方式,也有分割符方式,可隱藏引數,傳遞大批資料,比較方便。


使用場合:

與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。

然而,在以下情況中,請使用 POST 請求:

1.無法使用快取檔案(更新伺服器上的檔案或資料庫)

2.向伺服器傳送大量資料(POST 沒有資料量限制)

3.傳送包含未知字元的使用者輸入時,POST 比 GET 更穩定也更可靠