先看下面一段代碼,然后給大家詳細介紹,Ajax中有關readyState(狀態值)和status(狀態碼)的問題,具體內容如下所示:
var getXmlHttpRequest = function () {try{//主流瀏覽器提供了XMLHttpRequest對象return new XMLHttpRequest();}catch(e){//低版本的IE瀏覽器沒有提供XMLHttpRequest對象,IE6以下//所以必須使用IE瀏覽器的特定實現ActiveXObjectreturn new ActiveXObject("Microsoft.XMLHTTP");}};var xhr = getXmlHttpRequest();// readyState 0=>初始化 1=>載入 2=>載入完成 3=>解析 4=>完成// console.log(xhr.readyState); 0xhr.open("TYPE", "URL", true);// console.log(xhr.readyState); 1xhr.send();// console.log(xhr.readyState); 1xhr.onreadystatechange = function () {// console.log(xhr.status); //HTTP狀態嗎// console.log(xhr.readyState); 2 3 4if(xhr.readyState === 4 && xhr.status === 200){alert(xhr.responseText);}};
1.Ajax:readyState(狀態值)和status(狀態碼)的區別
readyState,是指運行AJAX所經歷過的幾種狀態,無論訪問是否成功都將響應的步驟,可以理解成為AJAX運行步驟,使用“ajax.readyState”獲得
status,是指無論AJAX訪問是否成功,由HTTP協議根據所提交的信息,服務器所返回的HTTP頭信息代碼,使用“ajax.status”獲得
總體理解:可以簡單的理解為state代表一個整體的狀態。而status是這個大的state下面具體的小的狀態。
2.什么是readyState
readyState是XMLHttpRequest對象的一個屬性,用來標識當前XMLHttpRequest對象處于什么狀態。
readyState總共有5個狀態值,分別為0~4,每個值代表了不同的含義
0:初始化,XMLHttpRequest對象還沒有完成初始化
1:載入,XMLHttpRequest對象開始發送請求
2:載入完成,XMLHttpRequest對象的請求發送完成
3:解析,XMLHttpRequest對象開始讀取服務器的響應
4:完成,XMLHttpRequest對象讀取服務器響應結束
3.什么是status
status是XMLHttpRequest對象的一個屬性,表示響應的HTTP狀態碼
在HTTP1.1協議下,HTTP狀態碼總共可分為5大類
1xx:信息響應類,表示接收到請求并且繼續處理
2xx:處理成功響應類,表示動作被成功接收、理解和接受
3xx:重定向響應類,為了完成指定的動作,必須接受進一步處理
4xx:客戶端錯誤,客戶請求包含語法錯誤或者是不能正確執行
5xx:服務端錯誤,服務器不能正確執行一個正確的請求
100——客戶必須繼續發出請求
101——客戶要求服務器根據請求轉換HTTP協議版本
200——交易成功
201——提示知道新文件的URL
202——接受和處理、但處理未完成
203——返回信息不確定或不完整
204——請求收到,但返回信息為空
新聞熱點
疑難解答
圖片精選