AJAX概述
1、AJAX的定義:非同步的JS和XML,使用XMLHttpRequest物件與伺服器通訊;可以在不重新重新整理頁面的情況下與伺服器通訊,交換資料或更新頁面。
2、概念:AJAX是瀏覽器與伺服器進行資料通訊的技術。
3、工作原理:客戶端傳送請求交給xhr,xhr把請求提交給伺服器進行處理,伺服器響應資料交給xhr物件,xhr物件接收資料,最後由javascript把資料寫到頁面上
4、AJAX請求步驟:①建立XMLHttpRequest例項②傳送HTTP請求③接收伺服器傳回的資料④更新網頁資料
(AJAX只能向同源網址(協議域名埠相同)發出HTTP請求,否則會報錯)
XMLHttpRequest物件
1、XMLHttpRequest物件是AJAX的主要介面;XMLHttpRequest本身是一個建構函式,沒有任何引數
2、readyState: 返回請求的狀態。可能的值有:
-
0: 物件已建立,但尚未呼叫 open() 方法。
-
1: open() 方法已被呼叫。
-
2: send() 方法已被呼叫,請求已發出。
-
3: 伺服器正在傳送響應資料。
-
4: 伺服器響應已完全接收。
-
var xhr = new XMLHttpRequest(); if (xhr.readyState === 4) { // 請求結束,處理伺服器返回的資料(表示發出的HTTP請求已經成功) } else { // 顯示提示“載入中……” }
3、responseText: 將響應的文字內容作為字串返回。
4、responseXML: 如果響應的內容型別是 "text/xml" 或 "application/xml",則將響應作為 XMLDocument 物件返回。
5、status: 返回 HTTP 狀態碼,只有2xx和304的狀態碼錶示成功。
6、statusText: 返回 HTTP 狀態文字,例如 "OK" 或 "Not Found"。
7、responseURL: 屬性是字串,表示傳送資料的伺服器的網址
var xhr = new XMLHttpRequest();
xhr.open('GET', 'http://example.com/test', true);
xhr.onload = function () {
// 返回 http://example.com/test
console.log(xhr.responseURL);
};
xhr.send(null);
方法
- open(method, url, async, user, password): 初始化請求引數。
method
: 請求方法(GET, POST, PUT, DELETE 等)。url
: 請求的 URL。async
: 是否非同步傳送請求,預設為true
。user
: 可選的使用者名稱用於身份驗證。password
: 可選的密碼用於身份驗證。
- send(data): 傳送請求。如果請求是 POST 型別,那麼
data
將作為請求主體傳送。 - setRequestHeader(header, value): 設定請求的 HTTP 頭部資訊。
- abort(): 取消當前請求。
- getAllResponseHeaders(): 返回所有響應頭資訊。
- getResponseHeader(header): 返回特定響應頭的資訊。
事件
1、onreadystatechange:
- 當 readyState 改變時會觸發此事件。
2、onloadstart:
- 當請求開始載入時觸發。
3、onprogress:
- 當請求接收到資料時觸發。
4、onabort:
- 當請求被取消時觸發。
5、onerror:
- 當請求遇到錯誤時觸發。
6、onload:
- 當請求成功完成時觸發。
7、ontimeout:
- 當請求超時時觸發。
8、onloadend:
- 當請求結束時觸發(無論請求成功還是失敗)。