ajax請求的狀態(tài):1、“未初始化”,表示還沒有調(diào)用send()方法;2、“載入”,表示已調(diào)用send()方法,正在發(fā)送請求;3、“載入完成”;4、“交互”,表示正在解析響應(yīng)內(nèi)容;5、“完成”,表示響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
原生ajax請求寫法:
var http = new XMLHttpRequest(); http.open('get','./package.json'); http.onreadystatechange = function () { if(http.readyState == 4 && http.status == 200) { var result = JSON.parse(http.responseText); console.log(result.name) } }; http.send();
ajax請求的5種狀態(tài)(readyState)
-
0 - (未初始化)還沒有調(diào)用send()方法
-
1 - (載入)已調(diào)用send()方法,正在發(fā)送請求
-
2 - (載入完成)send()方法執(zhí)行完成,已經(jīng)接收到全部響應(yīng)內(nèi)容
-
3 - (交互)正在解析響應(yīng)內(nèi)容
-
4 - (完成)響應(yīng)內(nèi)容解析完成,可以在客戶端調(diào)用了
readyState 狀態(tài)說明
(0)未初始化
此階段確認(rèn)XMLHttpRequest對象是否創(chuàng)建,并未調(diào)用open()方法進行未初始化作好準(zhǔn)備。值未0表示對象已經(jīng)存在,否則瀏覽器會報錯—對象不存在。
(1)載入
此階段對xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest對象進行初始化,即調(diào)用open()方法,根據(jù)參數(shù)(method,url,true)完成對象狀態(tài)的設(shè)置。并調(diào)用send()方法開始向服務(wù)端發(fā)送請求。值為1表示正在向服務(wù)端發(fā)送請求。
(2)載入完成
此階段接收服務(wù)器端的響應(yīng)數(shù)據(jù)。但獲得的還只是服務(wù)端響應(yīng)的原始數(shù)據(jù),并不能直接在客戶端使用。值為2表示已經(jīng)接收完全部響應(yīng)數(shù)據(jù)。并為下一階段對數(shù)據(jù)解析作好準(zhǔn)備。
(3)交互
此階段解析接收到的服務(wù)器端響應(yīng)數(shù)據(jù)。即根據(jù)服務(wù)器端響應(yīng)頭部返回的MIME類型把數(shù)據(jù)轉(zhuǎn)換成能通過responseBody、responseText或responsexml(標(biāo)準(zhǔn)化越來越近了)屬性存取的格式,為在客戶端調(diào)用作好準(zhǔn)備。狀態(tài)3表示正在解析數(shù)據(jù)。
(4)完成
此階段確認(rèn)全部數(shù)據(jù)都已經(jīng)解析為客戶端可用的格式,解析已經(jīng)完成。值為4表示數(shù)據(jù)解析完畢,可以通過xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest對象的相應(yīng)屬性取得數(shù)據(jù)。
【相關(guān)教程推薦:AJAX視頻教程】