AJAX執行三步驟
- 取槍:產生一個XMLHttpRequest
- 上膛:取得要讀取的網址,get(讀取資料)、傳送資料到伺服器
- 擊發:傳送send
- 回膛:回傳資料到瀏覽器
步驟一(取槍):產生一個XMLHttpRequest
1 |
|
我們可以經由console得知現在哪個階層
- 0 - 產生XMLHttpRequest,但沒有連結要撈取的資料
- 1 - 使用Open(),未傳送資料
- 2 - 偵測到有send指令
- 3 - loading
- 4 - 完成取得資料
步驟二(上膛):取得要讀取的網址,get(讀取資料)、傳送資料到伺服器
1 | xhr.open(‘get’,‘https://vince.project/data.json’,ture) |
同步與非同步定義
true非同步:
不會等資料傳回,就讓程式繼續往下跑,等到回傳才會自動回傳,如果載入的資料量入過大,不可能等到資料全部上傳後才顯示程式,因此仍會使用true。false同步:
等資料傳回來之後才會讓程式碼繼續往下跑
我們可以使用onload事件,確定資料有回傳之後才執行函數內容
1 |
|
!!!需注意CORS 跨網域撈取資料
一般來說跨網域需要詢問對方有沒有開啟CORS,開啟才有辦法抓取資料,取得API也是相似,ex.高雄市公開json資料便沒有開啟此功能。可使用偵測網址查閱狀態:http://test-cors.org/