---
# System prepended metadata

title: AJAX - 1.透過 XMLHttpRequest 物件跨瀏覽器撈資料
tags: [AJAX]

---

###### tags:`AJAX` 
# AJAX - 1.透過 XMLHttpRequest 物件跨瀏覽器撈資料

以下為記錄**透過 XMLHttpRequest 物件跨瀏覽器撈資料**方式

1.在HTML檔連結的js檔宣告

`var 變數(自取名) = new XMLHttpRequest();`

2.打開網頁chorme console 輸入自己設的變數名,可以看到相關資料.
這邊我設的是NEWAJAX

### readyState撈資料狀態顯示
**readyState:0** 你已經產生一個新的XMLHttpRequest,但還沒有連結你要撈的資料
![](https://i.imgur.com/Yt3IZId.jpg)

3.開始寫撈資料語法,語法是

`變數(自取名).open('','',true)`

三個參數個別代表意義是:**格式、撈資料網址、同步或非同步**

常見格式:get(讀取資料)、post(傳送資料倒伺服器)、
這邊讀取網址是使用六角學院線上課程的老師給的範例json url
**true**:非同步.**false**:同步
(非同步資料請看另一[章節](https://hackmd.io/KxaZa7V0SLebq2cPvi3kWA))

4.寫完後再重新整理,打開chorme console看一下XMLHttpRequest狀態

**readyState:1** 你用了open(),但你還沒有把資料傳送過去
注意:這邊可以看到responseText是空值
![](https://i.imgur.com/znGuHB3.jpg)

5.傳送資料,和json互動,因為我們這邊沒有要改變資料,所以可以傳送空值<kbd>null</kbd>

`變數(自取名).send(null)`

6.寫完後再重新整理,打開chorme console看一下XMLHttpRequest狀態,
可以發現出現readyState:4,以及response和responseText都撈到資料.

**readyState:4** 你撈到資料了,數據已經完全接收到了
**readyState:3** loading中,資料量較為龐大時出現
**readyState:2** 偵測到你有用send

Ps:<kbd>readyState:2</kbd> 沒有截到圖片,因為資料量很少,很快就撈到,直接讀取到<kbd>readyState:4</kbd>

![](https://i.imgur.com/xptsSmL.jpg)






