今日進行 AJAX 的觀念以及簡單的操作
資料請求流程:
var xhr = new XMLHttpRequest();
xhr.open('get','test.json',true);
xhr.send(null);
XMLHttpRequest():用來建立 AJAX 請求,使用 var xhr = new XMLHttpRequest(); 建立(變數 xhr 名稱可自訂)
xhr.open('格式','網址',BooLean)
'格式':get 代表讀取資料,post 代表傳送資料'網址':資料的路徑BooLean:true 代表非同步,不會等資料回傳就繼續下一個動作,一般預設值; false 代表同步,會等資料回傳才進行下一步xhr.send('資訊'):若無需要,則使用 null 代表空值
xhr.readyState:可用 readyState 確認狀態
open())open() 讀取網址,但還沒有傳送send()
利用六角的 API 進行 get 練習:https://hexschool.github.io/ajaxHomework/data.json
開啟 chrome 的 console 進行以下確認
var xhr = new XMLHttpRequest();
xhr.readyState; // 顯示 0
xhr.open('get','https://hexschool.github.io/ajaxHomework/data.json',true);
xhr.readyState; // 顯示 1
xhr.send(null);
xhr.readyState; // 顯示 4
xhr.response; // 顯示 "[{"name":"王小名"}]"
一開始實作 send() 會跳錯誤 net::ERR_BLOCKED_BY_CLIENT,頁面是練習的 index.html ,另開一個 chrome 的新頁面卻可以成功,經確認後應該是開啟廣告過濾工具的關係,關閉後即可正常 send()
送出 send() 後,狀態為 4 (done),要再次送出send()會要求要先 open() 讓狀態為 1 (opened) 才可以繼續
繼續說明 AJAX