Ajax, 選擇GET還是POST?
當我們不通過重新加載頁面,用Ajax訪問服務器的時候,有兩個選擇可以將請求信息傳送到服務器上。這兩個選擇分別是GET和POST。
在把請求信息發送到服務器上以加載新的頁面時,這兩個選擇有兩個不同之處。***個區別是你是請求了信息的一小部分而不是整個頁面。第二個區別也是最明顯的區別是由于Ajax請求不會出現在地址欄中,因此當發送請求時,在訪問者的屏幕上是看不出什么異同的。使用GET生成調用不會暴露域和它們的值,使用POST也不會暴露。因此,我們要怎樣在這兩者之間作出選擇呢?
初學者可能犯的一個錯誤是對于大多數的調用都使用GET命令,僅僅因為這一命令相對而言更容易編寫。GET與POST調用之間最顯著的差異是當發出加載新頁面請求時,GET調用對于同樣數量的數據有著相同的限制。唯一的區別是你處理的少量的Ajax請求數據,而你并不想通過這種長度運行的限制來完成頁面的加載。初學者可能會在少數情況下,如他們確實需要傳送更多信息時,使用POST。
當我們有大量數據要傳送時***的辦法是一次發出多個只傳遞少量信息的Ajax調用時。如果你正用一個Ajax調用發送大量數據,那么***是結束這種做法,因為這樣做并不能節約時間。
因此,需要傳送大量數據能成為我們在GET和POST之間猶豫不決的理由嗎?這兩個方法都是為不同的目的而設計的,兩者的不同也在于其使用目的。這一說法不僅適用于GET和POST的使用,也適用于其他的方法。
GET的目的就如同其名字一樣是用于獲取信息的。它旨在顯示出頁面上你要閱讀的信息。瀏覽器會緩沖GET請求的執行結果,如果同樣的GET請求再次發出,瀏覽器就會顯示緩沖的結果而不是重新運行整個請求。這***程不同于瀏覽器的處理過程,但是它是有意設計成這樣以使GET調用更有效率。GET調用會檢索要顯示在頁面中的數據,數據不會在服務器上被更改,因此重新請求相同數據的時候會得到相同的結果。
POST方法應該用于你需要更新服務器信息的地方。如某調用要更改保存在服務器上的數據,而從兩個同樣的POST調用返回的結果或許會完全不同,因為第二個POST調用的值與***個的值不相同,這是由于***個調用已經更新了其中一些值。POST調用通常會從服務器上獲取響應而不是保持前一個響應的緩沖。
因此,不要用數據的量來決定是要選擇GET還是POST,而應該按照目的在兩者間作出選擇。如果調用是要檢索服務器上的數據則使用GET。如果要檢索的值會隨時間和更新進程的改變而改變則要在GET調用中添加一個當前時間參數,這樣后面的調用才不會使用先前的不正確的緩沖。如果調用是向服務器上發送任意數據,就可以使用POST。
事實上,我們不應該不僅僅只將這個標準作為選擇怎樣使用GET和POST調用的標準,在處理頁面處理形式的時候也可以將它作為取舍這兩個調用的標準。
【編輯推薦】