2009-09-03 82 views
21

創建ajax請求時GET和POST的優點是什麼,反之亦然?我怎麼知道在任何時候我應該使用哪一個?這是一個安全意識的決定嗎?GET與POST ajax請求:何時以及如何使用?

另外,他們實際發送的方式有什麼區別?

+0

可能重複:http://stackoverflow.com/questions/715335/get-vs-post-in-ajax – trante

回答

17

POST請求是您不希望意外發生的請求。 GET請求是您可以通過用戶通過URL指向瀏覽器發生的請求。

GET請求可以很簡單地重複,因爲它們的數據基於URL本身。

你應該考慮一下AJAX請求像你想想常規形式請求(和它們的GET和POST)

+0

因此爲了安全起見,如果頁面通常的arent頁面意味着被導航到,我應該選擇POST? – johnnietheblack

+2

特別刪除的東西。 –

24

的GET應該用於idempotent操作,即可以安全地重複一次以上不改變任何操作。瀏覽器會緩存GET請求(正常和AJAX請求)

職位應被普遍用於非冪等操作,如保存的東西。儘管你可以使用它們進行其他操作。

GET的數據通過URL查詢字符串發送。 POST的數據單獨發送。某些瀏覽器的URL最大長度(我認爲Internet Explorer是2048個字符),如果查詢字符串變得太長,則會出現錯誤。

22

您應該在AJAX調用中使用GET和POST請求,就像在正常調用中使用GET和POST請求一樣。拇指的基本規則:

會要求修改模型中的什麼嗎?

  • YES:請求將修改您的數據存儲(添加/更新/刪除)的數據, 或以其他方式更改服務器(事業創造 文件的狀態,例如)。 使用POST。
  • 編號:該請求不會影響服務器上任何事情(數據庫,文件系統, 會話...)的狀態,但僅檢索信息。 使用GET。
3

的雅虎Mail團隊發現,在使用XMLHttpRequest時,POST在瀏覽器中分兩步實現:首先發送頭,然後發送數據。所以最好使用GET,它只需要一個TCP數據包發送(除非你有很多的cookie)。 IE中最大的URL長度是2K,所以如果你發送的數據超過2K,你可能無法使用GET。

http://developer.yahoo.com/performance/rules.html#ajax_get