jQuery AJAX中readyState與status的區(qū)別與聯(lián)系
作為web前端大殺器之一的AJAX,它的出現(xiàn)顛覆了很多人對web前端的理解,從我個人的角度看來,如果說1996年html/css/JavaScript三神器的終于集齊,使得web前端擁有了召喚神龍的能力,那么ajax就是三神器召喚出來的第一條神龍,從此以后,前后端代碼擁有了完全分開的可能,在遇見要向后臺傳參之類的問題時,前端程序猿們都可以自信的喊出:竜が我が敵をくらえ。。。。。
在使用AJAX時,這里我用的是原生的js而不是jQuery等框架,因為女王告訴我們原生的才是最強大的。。。。
話不多說,先看代碼
這段代碼構(gòu)造一個XHR對象的實例request,并用它來建立異步請求。在onreadystatechange事件中,我們發(fā)現(xiàn)有readyState與status兩個屬性,其中readyState獲取AJAX狀態(tài)值,其值與含義如下:
0:請求未初始化,open方法還未調(diào)用
1:服務(wù)器連接已建立,open已調(diào)用
2:請求已接受,即收到頭信息
3:請求處理中,即收到響應(yīng)主體
4:請求完成,即響應(yīng)完成
而status則獲取HTTP狀態(tài)碼,其由三位數(shù)字組成,第一位數(shù)與含義如下:
1xx:表示服務(wù)器收到web瀏覽器的請求,正在處理
2xx:成功,表示用戶請求被正確接受、理解和處理
3xx:重定向,表示請求沒有成功,客戶需要采取進(jìn)一步動作
4xx:客戶端錯誤,表示客戶端提交的請求錯誤
5xx:服務(wù)器錯誤,表示服務(wù)器不能完成對請求的處理
那么AJAX狀態(tài)值與HTTP狀態(tài)碼之間有什么區(qū)別與聯(lián)系呢?這是一個值得思考的問題,雖然其對編程本身沒有用,但秉著知其然更要知其所以然的道理,我們還是來研究一下。
眾所周知,AJAX的核心是XHR對象,在AJAX執(zhí)行過程中,readyState的值從0開始變化,當(dāng)AJAX運行到send方法調(diào)用時,發(fā)送HTTP請求,HTTP請求安裝步驟執(zhí)行,此時status的值開始發(fā)生變化,AJAX運行機制等待HTTP請求返回結(jié)果。最后,當(dāng)HTTP請求返回結(jié)果后,無論HTTP請求成功還是失敗、也不管是否請求到正確信息,AJAX的運行機制都會繼續(xù)執(zhí)行,直到完成運行或者出錯為止。這就是我理解的AJAX狀態(tài)值與HTTP狀態(tài)碼之間的關(guān)系。
不知道我這樣理解大家是否可以接受,如果有不清楚或者認(rèn)為有錯的地方,歡迎大家在評論區(qū)指出。阿里嘎多。
相關(guān)文章
AJAX和三層架構(gòu)實現(xiàn)分頁功能具體思路及代碼
本文涉及到AJAX和三層架構(gòu)方面的知識,在學(xué)習(xí)分頁的同時也鞏固了一下它們的相關(guān)知識,適合初學(xué)者的你2013-05-05ajax實現(xiàn)用戶名校驗的傳統(tǒng)和jquery的$.post方式(實例講解)
下面小編就為大家分享一篇ajax實現(xiàn)用戶名校驗的傳統(tǒng)和jquery的$.post方式的實例講解,具有很好的參考價值,希望對大家有所幫助2017-12-12解決Ajax方式上傳文件報錯"Uncaught TypeError: Illegal invocation"
這篇文章主要介紹了Ajax方式上傳文件報錯"Uncaught TypeError: Illegal invocation",非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06菜鳥蔡之Ajax復(fù)習(xí)第二篇(JQuery中的load()方法實現(xiàn)Ajax功能)
在上一篇博客中寫到的是在傳統(tǒng)的Javascript中使用XMLHttpRequest對象異步加載數(shù)據(jù)的,唉,童鞋.......看到那些代碼是不是有點頭疼啊!呵呵......2012-11-11ajax判斷后端返回的數(shù)據(jù)是否為null的方法
今天小編就為大家分享一篇ajax判斷后端返回的數(shù)據(jù)是否為null的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08ajax交互Struts2的action(客戶端/服務(wù)器端)
本文為大家探討下ajax交互Struts2的action并有客戶端及服務(wù)器端代碼,感興趣的朋友可以參考下,希望對大家有所幫助2013-08-08