天天看點

玩轉AJAX之四:深探XMLHttpRequest對象

本篇文章将與讀者一起深探我們上篇文章的一個重要對象XMLHttpRequest細節。

一、關于Ajax的Http就緒狀态

如果讀者閱讀這系列的文章是根據更新順序閱讀,那麼相信大家對上篇文章的最後一段代碼片段中的“readyState == 4”不會陌生,那這條語句究竟想表示啥了,不要着急,Looked down follow me。

Http就緒狀态是用來表示向WEB程式發起請求後的狀态信号,比如描叙着現在Client與Server的互動式是進行中、即将完成還是已經完成等等狀态。在 Ajax 應用程式中需要了解五種就緒狀态【表4-1】:

表4-1:Ajax就緒狀态表

0:請求未初始化(還沒有調用open())。 

1:請求已經建立,但是還沒有發送(還沒有調用send())。 

2:請求已發送,正在進行中(通常現在可以從響應中擷取内容頭)。 

3:請求在進行中;通常響應中已有部分資料可用了,但是伺服器還沒有完成響應的生成。

4:響應已完成;您可以擷取并使用伺服器的響應了。

在上表中我們一般住需關注值為4的狀态,為什麼隻需要關注該狀态?因為不同的浏覽器在就緒狀态的表示上有小小的差别,比如FireFox與IE有1、2、3、4狀态,而Opera就隻有3、4狀态。也因為浏覽器的不同,會使我們在寫程式的時候增加判斷代碼,是以我們隻需要關注狀态碼為4的時候。

二、關于Http狀态代碼

相信讀者經常能看到這樣的代碼:500、404,這些就是我們現在要談到Http狀态碼。由于我們在送出請求的時候,如果頁面出現錯誤比如:404(沒找到網頁),他的就緒狀态最後頁上為4,因為請求完成(不考慮是否得到想要的結果)。那麼我們為了使程式跑的更穩定、資料可靠,我們應該在上篇文章的最後代碼段中加入這樣的判斷[示例4-1]。

//示例4-1
if(Ajax.readyState==4)
{
   if(Ajax.status==200)//200表示是通路WEB伺服器一切正常
  {
    alert(Ajax.responseText);
  }
}      

三、關于responseText與responseXML

在上面代碼中我們看到了responseText,那麼在什麼場景下使用了。表4-2

表4-2:

responseText:伺服器傳回的是文本格式的資料時使用。

responseXML:伺服器傳回的是XML格式的資料時使用。

四、總結

本篇主要是詳細詳解在運用Ajax開發中常用的知識,目的讓讀者知其然,知其是以然。相信讀者下次看到類似的代碼時感到不陌生。

繼續閱讀