首頁 培訓計劃 培訓課程 企業內訓 學員論壇 技術文章 成功案例 師資簡介 關于我們 在線留言  
J2EE開發資料
Ajax, 選擇GET還是POST?

文章來源:IT專家網論壇 作者: 發布日期:2009-10-23
打 印】【關 閉

  當我們不通過重新加載頁面,用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調用的標準,在處理頁面處理形式的時候也可以將它作為取舍這兩個調用的標準。

打 印】【關 閉

上一篇:ASP.NET的五大數據控件淺談
下一篇:AJAX會擴大安全方面的威脅
相關新聞
版權所有©威課網 粵ICP備13058727號