AJAX 非同步觀念

Chun
3 min readJun 23, 2020

--

使用 AJAX 載入資料時,利用 open 傳參數的語法,來「讀取」或「傳送」資料到遠端伺服器。

var xttp = new XMLhttpRequest();     
// 必須先產生 XMLhttpRequest 物件,用來向其他伺服器撈取資料
xttp.open (‘get’ , ‘http://www.xxx.com’, true)
// 格式 要讀取的網址 true: 非同步。 false: 同步

true 非同步(預設):不會等到資料傳回來,就讓程式先繼續往下跑。
false 同步:等資料傳回來,才會讓程式先繼續往下跑。

若要載入的資料相當龐大時,建議使用「true 非同步」,若使用「false 同步」可能導致畫面卡很久。

由於非同步的關係,以下案例:

因為資料還沒有回傳過來,就先跑下來的程式碼,所以 console.log 撈不到資料(紅色框框處為空白)。

解決方法:

使用 onload 當資料載入完成後,再執行 function 內程式。

利用抓取到的資料,手動變更 HTML 內容

(範例:變更 google 的 搜尋欄位文字內容)

  1. 先將 JSON 資料從字串轉成陣列格式。JSON.parse(xhttp.responseText);
  2. 選取 dom 節點,並更改文字內容 textContent。
  3. 文字內容變更為陣列裡的資料 str[0].name。
原本的 google 首頁
變更後的 google 首頁

HTTP 狀態碼

200:有撈到資料,資料有正確回傳。
404:沒有撈到資料,資料讀取錯誤。

可加入判斷式,在不同狀態下顯示不同程式碼。

if (xhttp.status == 200){
alert('資料有撈到!')
}else if(xhttp.status == 404){
alert('資料沒有錯誤!')
}

--

--

No responses yet