ajax
- 全名為Asynchronous JavaScript And XML.
- 基於 XmlHttpRequest(XHR) 進行開發
- 透過 XML 做資料交換。但不僅限於 XML,JSON 亦可
- XHR Object 結構較為複雜,不易開發
- 容易有 callback hell
axios
- 封裝 XMLHttpRequest(XHR),更為易用
- 將結果自動轉換成 json
- 支援 Promise,解決 callback hell 問題
- 可以通過網路請求檢測傳送進度
- 提供超時處理
- 瀏覽器相容性佳
- 提供攔截器(interceptor),可以統一處理發送前或接收資料後的邏輯
fetch
- ES6 新增加的 API,主要用來取代 ajax
- 基於 Promise,解決 callback hell 問題
- 提供豐富的 API,使用結構簡單
- 預設不帶 cookie,使用時需要設定
- 沒有辦法檢測請求的進度,無法取消或超時處理
- 獲取結果有多種方法,資料型別亦有對應的獲取方法,封裝時需要分別處理,易出錯
- 要支援老舊瀏覽器的話,須搭配 polyfill