ajax中readyState屬性的狀態碼含義

今天查了一下ajax中readyState屬性的狀態碼含義,發現大多解釋不全,雖然每句話都是對的,但卻都不一樣。這裏整理了一下個人覺得最佳的解釋。
readyState表示xhr對象的請求狀態,取值範圍是0——4,分別表示5個不同的狀態。
0:(未初始化)xhr對象已經創建,但還沒有調用open()方法。值爲0表示對象已經存在,否則瀏覽器會報錯:對象不存在。
1 :(載入/發送請求)調用open()方法對xhr對象進行初始化,根據參數(method,url,true),完成對象狀態的設置。並調用send()方法開始向服務端發送請求。值爲1表示正在向服務端發送請求。
2 :(載入完成/響應接收)接收服務器端響應回的數據。但獲得的還只是服務端響應的原始數據,並不能直接在客戶端使用。值爲2表示send()請求方法執行完成,並已經接收完全部的響應數據(未解析)。
3 - (交互/解析數據)正在解析從服務器端接收到的響應數據。即根據服務器端響應頭部返回的MIME類型把數據轉換成能通過responseBody、responseText或responseXML屬性存取的格式,爲在客戶端調用作好準備。值爲3表示正在解析數據。
4 - (後臺處理完成)響應內容解析完成,可以在客戶端調用了。此階段確認全部數據都已經解析爲客戶端可用的格式,解析已經完成。值爲4表示數據解析完畢,可以通過XMLHttpRequest對象的相應屬性取得數據。

總之,整個XMLHttpRequest對象的生命週期應該包含如下階段:
創建-0初始化請求-1發送請求-2接收數據-3解析數據-4完成 。

開發中默認使用”===”來避免拋出異常。

如果想把標準寫法和IE寫法混在一起,可以這麼寫:

      var xhr = null;
      if (window.XMLHttpRequest) {
        xhr = new XMLHttpRequest();
      } else {
        xhr = new ActiveXObject('Microsoft.XMLHttp');
      }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章