一、GET
一個簡單的 GET 請求:
xmlhttp.open("GET","demo_get.asp",true); xmlhttp.send();
在上面的例子中,可能得到的是緩存的結果。
為了避免這種情況,需要向 URL 添加一個唯一的 ID:
xmlhttp.open("GET","demo_get.asp?t=" + Math.random(),true); xmlhttp.send();
如果通過 GET 方法發送信息,要為 URL 添加信息:
xmlhttp.open("GET","demo_get2.asp?fname=Bill&lname=Gates",true); xmlhttp.send();
另外,GET 請求具有以下的幾個特點:
- GET 請求可被緩存
- GET 請求保留在瀏覽器歷史記錄中
- GET 請求可被收藏為書簽
- GET 請求不應在處理敏感數據時使用
- GET 請求有長度限制
- GET 請求只應當用於取回數據
二、POST
一個簡單 POST 請求:
xmlhttp.open("POST","demo_post.asp",true); xmlhttp.send();
如果像 HTML 表單那樣 POST 數據,要用 setRequestHeader() 來添加 HTTP 頭,然后在 send() 方法中規定所要發送的數據
xmlhttp.open("POST","ajax_test.asp",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("fname=Bill&lname=Gates");
這里 setRequestHeader() 包含兩個參數 header 和 value,前者用來規定頭的名稱,后者規定頭的值。
另外,POST 請求具有以下的幾個特點:
- POST 請求不會被緩存
- POST 請求不會保留在瀏覽器歷史記錄中
- POST 請求不能被收藏為書簽
- POST 請求對數據長度沒有要求
為什么 open 方法第三個參數 Async=true ?
該參數規定請求是否異步處理,如果是異步通信方式(true),客戶機就不等待服務器的響應;如果是同步方式(false),客戶機就要等到服務器返回消息后才去執行其他操作
三、選 GET 還是選 POST?
與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用,然而,在以下情況中,必須用 POST 請求:
- 無法使用緩存文件(更新服務器上的文件或數據庫)
- 向服務器發送大量數據(POST 沒有數據量限制)
- 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠