jQuery AJAX中readyState與status的區(qū)別與聯(lián)系
作為web前端大殺器之一的AJAX,它的出現(xiàn)顛覆了很多人對(duì)web前端的理解,從我個(gè)人的角度看來(lái),如果說(shuō)1996年html/css/JavaScript三神器的終于集齊,使得web前端擁有了召喚神龍的能力,那么ajax就是三神器召喚出來(lái)的第一條神龍,從此以后,前后端代碼擁有了完全分開(kāi)的可能,在遇見(jiàn)要向后臺(tái)傳參之類(lèi)的問(wèn)題時(shí),前端程序猿們都可以自信的喊出:竜が我が敵をくらえ。。。。。
在使用AJAX時(shí),這里我用的是原生的js而不是jQuery等框架,因?yàn)榕醺嬖V我們?cè)牟攀亲顝?qiáng)大的。。。。
話不多說(shuō),先看代碼
這段代碼構(gòu)造一個(gè)XHR對(duì)象的實(shí)例request,并用它來(lái)建立異步請(qǐng)求。在onreadystatechange事件中,我們發(fā)現(xiàn)有readyState與status兩個(gè)屬性,其中readyState獲取AJAX狀態(tài)值,其值與含義如下:
0:請(qǐng)求未初始化,open方法還未調(diào)用
1:服務(wù)器連接已建立,open已調(diào)用
2:請(qǐng)求已接受,即收到頭信息
3:請(qǐng)求處理中,即收到響應(yīng)主體
4:請(qǐng)求完成,即響應(yīng)完成
而status則獲取HTTP狀態(tài)碼,其由三位數(shù)字組成,第一位數(shù)與含義如下:
1xx:表示服務(wù)器收到web瀏覽器的請(qǐng)求,正在處理
2xx:成功,表示用戶請(qǐng)求被正確接受、理解和處理
3xx:重定向,表示請(qǐng)求沒(méi)有成功,客戶需要采取進(jìn)一步動(dòng)作
4xx:客戶端錯(cuò)誤,表示客戶端提交的請(qǐng)求錯(cuò)誤
5xx:服務(wù)器錯(cuò)誤,表示服務(wù)器不能完成對(duì)請(qǐng)求的處理
那么AJAX狀態(tài)值與HTTP狀態(tài)碼之間有什么區(qū)別與聯(lián)系呢?這是一個(gè)值得思考的問(wèn)題,雖然其對(duì)編程本身沒(méi)有用,但秉著知其然更要知其所以然的道理,我們還是來(lái)研究一下。
眾所周知,AJAX的核心是XHR對(duì)象,在AJAX執(zhí)行過(guò)程中,readyState的值從0開(kāi)始變化,當(dāng)AJAX運(yùn)行到send方法調(diào)用時(shí),發(fā)送HTTP請(qǐng)求,HTTP請(qǐng)求安裝步驟執(zhí)行,此時(shí)status的值開(kāi)始發(fā)生變化,AJAX運(yùn)行機(jī)制等待HTTP請(qǐng)求返回結(jié)果。最后,當(dāng)HTTP請(qǐng)求返回結(jié)果后,無(wú)論HTTP請(qǐng)求成功還是失敗、也不管是否請(qǐng)求到正確信息,AJAX的運(yùn)行機(jī)制都會(huì)繼續(xù)執(zhí)行,直到完成運(yùn)行或者出錯(cuò)為止。這就是我理解的AJAX狀態(tài)值與HTTP狀態(tài)碼之間的關(guān)系。
不知道我這樣理解大家是否可以接受,如果有不清楚或者認(rèn)為有錯(cuò)的地方,歡迎大家在評(píng)論區(qū)指出。阿里嘎多。
相關(guān)文章
PJBLOG中用到的ajaxjs.幾個(gè)簡(jiǎn)單的函數(shù)
PJBLOG中用到的ajaxjs.幾個(gè)簡(jiǎn)單的函數(shù)...2007-12-12
利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算
這篇文章主要為大家詳細(xì)介紹了利用ajax+php實(shí)現(xiàn)商品價(jià)格計(jì)算,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
Jquery基于Ajax方法自定義無(wú)刷新提交表單Form實(shí)例
這篇文章主要介紹了Jquery基于Ajax方法自定義無(wú)刷新提交表單Form的方法,結(jié)合實(shí)例詳細(xì)分析了Ajax無(wú)刷新提交表單的完整實(shí)現(xiàn)過(guò)程,并總結(jié)了使用中的注意事項(xiàng),具有很好的借鑒價(jià)值,需要的朋友可以參考下2014-11-11
ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest進(jìn)行AJAX應(yīng)用程序開(kāi)發(fā)入
ajaxrequest.js ajaxrequest 0.7最新版 使用AJAXRequest進(jìn)行AJAX應(yīng)用程序開(kāi)發(fā)入門(mén)小技巧...2007-12-12

