AJAX = Asynchronous JavaScript and XML(異步的Javascript和XML)
AJAX最大的優點是在不重新加載整個頁面的情況下,可以與服務器交換數據並更新部分網頁內容。
1.1 場景原理
1-1.1 異步傳輸
當ajax發送請求后,在等待server端返回的這個過程中,前台會繼續執行ajax塊后面的腳本,直到server端返回正確的結果才會去執行success
1-1.2 同步傳輸
當ajax發送請求后,在等待server端返回的這個過程中,前台頁面里所有的代碼停止,頁面呈現假死狀態,當這個AJAX執行完畢后才會繼續運行其他代碼,頁面假死狀態解除。
1-1.3 使用方法
a) 創建 XMLHttpRequest 對象
var ajax =newXMLHttpRequest()
b) 發送請求
方法 |
描述 |
open(method,url,async) |
規定請求的類型、URL 以及是否異步處理請求。 ü method:請求的類型;GET 或 POST ü url:文件在服務器上的位置 ü async:true(異步)或 false(同步) |
send(string) |
將請求發送到服務器。 ü string:僅用於 POST 請求 |
ü GET數據
open(“GET”,url,true);
send();
ü POST數據
open(“POST”,url,true);
send(data);
ü 設置頭部
setRequestHeader(header,value)
1-2 可發送的數據格式
ajax的數據格式有四種:文本,json,HTML,和xml。現在普遍采用JSON數據格式發送數據。
1-2.1 JSON
JSON(JavaScript Object Notation, JS 對象標記) 是一種輕量級的數據交換格式。它基於 ECMAScript (w3c制定的js規范)的一個子集,采用完全獨立於編程語言的文本格式來存儲和表示數據。簡潔和清晰的層次結構使得 JSON 成為理想的數據交換語言。易於人閱讀和編寫,同時也易於機器解析和生成,並有效地提升網絡傳輸效率。
1-2.2 格式語法
JSON 是 JS 對象的字符串表示法,它使用文本表示一個 JS 對象的信息,本質是一個字符串。
var obj ={a:'Hello', b:'World'};
//這是一個對象,注意鍵名也是可以使用引號包裹的
var json ='{"a": "Hello", "b": "World"}';
//這是一個 JSON 字符串,本質是一個字符串
1-2.3 JSON/JS對象互轉
要實現從對象轉換為
JSON
字符串,使用
JSON.stringify()
方法:
var json =JSON.stringify({a:'Hello', b:'World'});
//結果是 '{"a": "Hello", "b": "World"}'
要實現從
JSON
字符串
轉換為對象,使用
JSON.parse()
方法:
var obj =JSON.parse('{"a": "Hello", "b": "World"}');
//結果是 {a: 'Hello', b: 'World'}
1-3 響應/回調函數
每當 readyState 改變時,就會觸發 onreadystatechange 事件。
readyState 屬性存有 XMLHttpRequest 的狀態信息。
下面是 XMLHttpRequest 對象的三個重要的屬性:
屬性 |
描述 |
onreadystatechange |
存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。 |
readyState |
存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。 · 0: 請求未初始化 · 1: 服務器連接已建立 · 2: 請求已接收 · 3: 請求處理中 · 4: 請求已完成,且響應已就緒 |
status |
200: "OK" |
responseText |
響應返回文本 |
responseXML |
|
1-4 status狀態
服務器常用的狀態碼及其對應的含義如下:
ü 200:服務器響應正常。
ü 304:該資源在上次請求之后沒有任何修改(這通常用於瀏覽器的緩存機制,使用GET請求時尤其需要注意)。
ü 400:無法找到請求的資源。
ü 401:訪問資源的權限不夠。
ü 403:沒有權限訪問資源。
ü 404:需要訪問的資源不存在。
ü 405:需要訪問的資源被禁止。
ü 407:訪問的資源需要代理身份驗證。
ü 414:請求的URL太長。
ü 500:服務器內部錯誤。