淺談ajax(二)

我們在使用open()的時候會有一個URL的參數,url參數其實就是指服務器上的文件地址,這個地址可以是任何類型的文件:txt、xml或者其他頁面文件。

第三個參數是異步(true orfalse):不推薦使用false

服務器響應

如果需要獲得服務器的響應,我們可以使用XMLHttpRequest對象的reponseText 或者reponsexml屬性。

當來自服務器的響應不是XML的時候,需要使用requestText屬性,該屬性可以返回字符串形式的響應:

document。getElementById("myDiv").innerHTML=xmlhttp.reponseText;

如果來自服務器的響應時XML,那麼需要作爲XML對象進行解析,需要使用reponseXML屬性。

例如請求hello.xml,並解析。

xmlDoc=xmlhttp.responseXML;
txt="";
x=xmlDoc.getElementsByTagName("ARTIST");
for (i=0;i<x.length;i++)
  {
  txt=txt + x[i].childNodes[0].nodeValue + "<br />";
  }
document.getElementById("myDiv").innerHTML=txt;

onreadystatechange事件

當請求被髮送到服務器,我們需要執行一些基於響應的任務,每當readyState改變時,就會觸發onreadystatechange事件。

readystate屬性存有XMLHttpRequest的狀態信息。

onreadystatechange:存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。

readyState

存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。

  • 0: 請求未初始化
  • 1: 服務器連接已建立
  • 2: 請求已接收
  • 3: 請求處理中
  • 4: 請求已完成,且響應已就緒
status

200: "OK"

404: 未找到頁面


當readystate等於4而且狀態爲200的時候,表示響應已經就緒。


xmlhttp.onreadystatechange=function(){
   if(xmlhttp.readystate==4&&xmlhttp.status==200){
    document。gtElementById("myDiv").innerHTML=xmlhttp.reponseText;
  }
}

Callback()

該函數是一種以參數形式傳遞給另一函數的函數。

如果一個網站上面存在有多個ajax的任務,那麼當創建對象編寫一個編著的函數,並給每個ajax任務調用該函數。

該函數調用應該包含url以及發生onreadystatechange時間時執行的任務(每次調用不盡相同)

function myFunction()
{
loadXMLDoc("ajax_info.txt",function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  });
}



















發佈了21 篇原創文章 · 獲贊 4 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章