## AJAX如何工作?
* * *
AJAX使用的XMLHttpRequest的對象與服務器通信。讓我們嘗試通過下面顯示的圖像了解AJAX的流程或AJAX的工作原理。

正如您在上面的示例中所看到的,XMLHttpRequest對象起著重要作用。
1. 用戶從UI發送請求,JavaScript中調用XMLHttpRequest對象。
2. HTTP請求由XMLHttpRequest對象發送到服務器。
3. 服務器使用JSP,PHP,Servlet,ASP.net等與數據庫交互。
4. 檢索數據。
5. 服務器將XML數據或JSON數據發送到XMLHttpRequest回調函數。
6. HTML和CSS數據顯示在瀏覽器上。
## 向服務器發送請求
* * *
XMLHttpRequest 對象用于和服務器交換數據。
當你的頁面全部加載完畢后,客戶端會通過 XMLHttpRequest 對象向服務器請求數據,服務器端接受數據并處理后,向客戶端反饋數據。
如需將請求發送到服務器,我們使用 XMLHttpRequest 對象的`open()`和`send()`方法:
~~~
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();
~~~
| 方法 | 描述 |
| --- | --- |
| open(*method*,*url*,*async*) | 規定請求的類型、URL 以及是否異步處理請求。method:請求的類型;GET 或 POSTurl:文件在服務器上的位置async:true(異步)或 false(同步)|
| send(*string*) | 將請求發送到服務器。 *string*:僅用于 POST 請 |
## GET 還是 POST?
* * *
與`POST`相比,GET 更簡單也更快,并且在大部分情況下都能用。
然而,在以下情況中,請使用`POST`請求:
* 無法使用緩存文件(更新服務器上的文件或數據庫)
* 向服務器發送大量數據(`POST`沒有數據量限制)
* 發送包含未知字符的用戶輸入時,`POST`比`GET`更穩定也更可靠