麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > JavaScript > 正文

javascript ajax的5種狀態(tài)介紹

2019-11-20 14:15:44
字體:
供稿:網(wǎng)友

在《Pragmatic ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化) A Web 2.0 Primer 》中偶然看到對readyStae狀態(tài)的介紹,感覺這個(gè)介紹很實(shí)在,摘譯如下:

0: (Uninitialized) the send( ) method has not yet been invoked.
1: (Loading) the send( ) method has been invoked, request in progress.
2: (Loaded) the send( ) method has completed, entire response received.
3: (Interactive) the response is being parsed.
4: (Completed) the response has been parsed, is ready for harvesting.

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),其他書中大都語焉不詳。像《Foundations of ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化)》中,只在書中的表2-2簡單地列舉了狀態(tài)的“名稱”--The state of the request. The five possible values are 0 = uninitialized, 1 = loading, 2 = loaded, 3 = interactive, and 4 = complete。而《ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化) in Action》中好像根本就沒有提到這5種狀態(tài)的細(xì)節(jié)?!禤rofessional ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化)》中雖不盡人意,但還是有可取之處:

There are five possible values for readyState:
0 (Uninitialized): The object has been created but the open() method hasn't been called.
1 (Loading): The open() method has been called but the request hasn't been sent.
2 (Loaded): The request has been sent.
3 (Interactive). A partial response has been received.
4 (Complete): All data has been received and the connection has been closed.

readyState有五種可能的值:
0 (未初始化): (xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest)對象已經(jīng)創(chuàng)建,但還沒有調(diào)用open()方法。
1 (載入):已經(jīng)調(diào)用open() 方法,但尚未發(fā)送請求。
2 (載入完成): 請求已經(jīng)發(fā)送完成。
3 (交互):可以接收到部分響應(yīng)數(shù)據(jù)。
4 (完成):已經(jīng)接收到了全部數(shù)據(jù),并且連接已經(jīng)關(guān)閉。

在《Understanding ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化): Using JavaScript to Create Rich Internet Applications》中,則用下表進(jìn)行了說明:

readyState Status Code
Status of the xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest Object
(0) UNINITIALIZED
未初始化 The object has been created but not initialized. (The open method has not been called.)
(xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest)對象已經(jīng)創(chuàng)建,但尚未初始化(還沒有調(diào)用open方法)。
(1) LOADING
載入 The object has been created, but the send method has not been called.
(xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest)對象已經(jīng)創(chuàng)建,但尚未調(diào)用send方法。
(2) LOADED
載入完成 The send method has been called, but the status and headers are not yet available.
已經(jīng)調(diào)用send方法,(HTTP響應(yīng))狀態(tài)及頭部還不可用。
(3) INTERACTIVE
交互 Some data has been received. Calling the responseBody and responseText properties at this state to obtain partial results will return an error, because status and response headers are not fully available.
已經(jīng)接收部分?jǐn)?shù)據(jù)。但若在此時(shí)調(diào)用responseBody和responseText屬性獲取部分結(jié)果將會(huì)產(chǎn)生錯(cuò)誤,因?yàn)闋顟B(tài)和響應(yīng)頭部還不完全可用。
(4) COMPLETED
完成 All the data has been received, and the complete data is available in the responseBody and responseText properties.
已經(jīng)接收到了全部數(shù)據(jù),并且在responseBody和responseText屬性中可以提取到完整的數(shù)據(jù)。

根據(jù)以上幾本書中的關(guān)于readyState五種狀態(tài)的介紹,我認(rèn)為還是《Pragmatic ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化) A Web 2.0 Primer 》比較到位,因?yàn)樗岬搅藢邮盏降臄?shù)據(jù)的解析問題,其他書中都沒有提到這一點(diǎn),而這一點(diǎn)正是“(3)交互”階段作為一個(gè)必要的轉(zhuǎn)換過程存在于“(2)載入完成”到“(4)完成”之間的理由,也就是其任務(wù)是什么。歸結(jié)起來,我覺得比較理想的解釋方法應(yīng)該以“狀態(tài):任務(wù)(目標(biāo))+過程+表現(xiàn)(或特征)”表達(dá)模式來對這幾個(gè)狀態(tài)進(jìn)行定義比較準(zhǔn)確,而且讓人容易理解?,F(xiàn)試總結(jié)如下:

readyState 狀態(tài)說明

(0)未初始化
此階段確認(rèn)xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest對象是否創(chuàng)建,并為調(diào)用open()方法進(jìn)行未初始化作好準(zhǔn)備。值為0表示對象已經(jīng)存在,否則瀏覽器會(huì)報(bào)錯(cuò)--對象不存在。

(1)載入
此階段對xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest對象進(jìn)行初始化,即調(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ù)。

概而括之,整個(gè)xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest對象的生命周期應(yīng)該包含如下階段:
創(chuàng)建-初始化請求-發(fā)送請求-接收數(shù)據(jù)-解析數(shù)據(jù)-完成

在具體應(yīng)用中,明確了readyState的五個(gè)狀態(tài)(xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest對象的生命周期各個(gè)階段)的含義,就可以消除對ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化)核心的神秘感(語焉不詳?shù)谋澈笠词枪逝摚圃焐衩馗?;要么就是“以其昏昏,使人昭昭”),迅速把握其?shí)質(zhì),對減少學(xué)習(xí)中的挫折感和增強(qiáng)自信心都極其有益。

比如,通過如下示例:

復(fù)制代碼 代碼如下:

//聲明數(shù)組
var states = [“正在初始化……”,
“正在初始化請求……成功!
正在發(fā)送請求……”,
“成功!
正在接收數(shù)據(jù)……”,
“完成!
正在解析數(shù)據(jù)……”,
“完成!
”];

//回調(diào)函數(shù)內(nèi)部代碼片段
if (xml(標(biāo)準(zhǔn)化越來越近了)Http.readyState==4)
{
var span = document.createElement(“span”);
span.innerHTML = states[xml(標(biāo)準(zhǔn)化越來越近了)Http.readyState];
document.body.appendChild(span);

if (xml(標(biāo)準(zhǔn)化越來越近了)Http.status == 200)
{
var xml(標(biāo)準(zhǔn)化越來越近了)doc = xml(標(biāo)準(zhǔn)化越來越近了)Http.responsexml(標(biāo)準(zhǔn)化越來越近了);
//其他代碼
}

//別忘記銷毀,防止內(nèi)存泄漏
xml(標(biāo)準(zhǔn)化越來越近了)Http = null;
}else{
var span = document.createElement(“span”);
span.innerHTML = states[xml(標(biāo)準(zhǔn)化越來越近了)Http.readyState];
document.body.appendChild(span);
}結(jié)果如下:

正在初始化請求……成功!
正在發(fā)送請求……成功!
正在接收數(shù)據(jù)……完成!
正在解析數(shù)據(jù)……完成!


我們很容易明白xml(標(biāo)準(zhǔn)化越來越近了)HttpRequest對象在各個(gè)階段都在做什么。因此,也就很容易對ajax(動(dòng)態(tài)網(wǎng)站靜態(tài)化)的核心部分有一個(gè)真正簡單明了的理解。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日韩精品一区二区三区中文 | 欧美成网 | 91精品国产91久久久 | 久久国产精品小视频 | 色视频91 | av免费在线播放网址 | 欧美在线小视频 | 精品国产一区二区在线 | 日韩欧美电影一区二区三区 | 久久久久999 | 免费国产人成网站 | 欧美一级毛片一级毛片 | 成人短视频在线观看免费 | 久久综合综合久久 | 在线看一区二区三区 | 精品一区二区三区在线观看国产 | 免费看性xxx高清视频自由 | 日本网站一区 | 91精品国产综合久久男男 | 久久精品亚洲一区二区三区观看模式 | 深夜免费福利视频 | 欧美18videos性处按摩 | 欧美a级在线免费观看 | 欧美性生活久久 | 午夜小视频免费观看 | 亚洲国产精品久久久久婷婷老年 | 黄色一级片在线观看 | 91麻豆精品国产91久久久无需广告 | 中文字幕一区在线观看视频 | 天天色综合6| 亚洲精品一区二区三区免 | 国产91久久久久久 | 欧美精品色精品一区二区三区 | 成人aaaaa片毛片按摩 | 久久国产精品免费视频 | 久久精品一二三区 | 黄色三级三级三级 | 欧美爱爱视频网站 | 久久黄色影院 | 国产精品99一区二区 | 欧美精品免费一区二区三区 |