1. 程式人生 > >AJAX筆記整理

AJAX筆記整理

AJAX: Asynchronous JavaScript and XML,非同步的Javascirpt和Xml。

Asynchronous:非同步

        與之對應的是 synchronous:同步,我們要知道這裡的同步和非同步指的是什麼?

                同步互動:指一個時間段內只能有一個程序在執行,當傳送一個請求時,必須等待結果的返回,才能傳送下一請求。

                非同步互動:指一個時間段內可以有多個程序在執行,即不需要等待返回,隨時可以傳送下一個請求。

JavaScript:整個技術的核心。

Xml:主要儲存和傳輸資料

AJAX到底是什麼?

    AJAX 是一種用於建立快速動態網頁的技術,通過在後臺與伺服器進行少量資料交換。

AJAX最大的用處是什麼?

    AJXA可以使網頁非同步更新,這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。而傳統的網頁不使用AJAX,如果需要更新,需要過載整個頁面。

    這就是AJAX最大的好處,使用者體驗好,無重新整理。

XMLHttpRequest物件

     

 XMLHttpRequest物件是AJAX的基礎,所有現代瀏覽器均支援 XMLHttpRequest 物件。

      XMLHttpRequest 用於在後臺與伺服器交換資料,使得在不重新載入整個網頁的情況下,更新網頁。

      1.建立XMLHttpRequest物件的語法

variable=new XMLHttpRequest();

      為了適應現代的所用瀏覽器,下面是通用的建立格式  

var xmlhttp;
if
(window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }

 

      2.向伺服器傳送請求

         我們使用的是XMLHttpRequest物件的open()和send()方法   

xmlhttp.open("GET","test.txt",true);//open(method(請求的型別),url(檔案在伺服器的位置),async(false:同步 true:非同步))
xmlhttp.send();//將請求傳送至伺服器

     3.處理返回響應

        需獲得來自伺服器的響應,我們使用 XMLHttpRequest 物件的 responseText 或 responseXML 屬性。

        responseText屬性獲取的是伺服器返回的字串形式的響應資料。

        responseXML屬性獲取的是伺服器返回的響應是XML。

     4. onreadystatechange 事件

      當請求被髮送到伺服器時,需要執行一些基於響應的任務。

      每當 readyState 改變時,就會觸發 onreadystatechange 事件。

      readyState 屬性存有 XMLHttpRequest 的狀態資訊。

      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.getElementById("test").innerHTML=xmlhttp.responseText;
    }
  }

 

總結:  

①建立ajax物件 var xhr=new XMLHttpRequest()

②建立一個http連線 xhr.open('get',url,true);

③傳送一個http請求 xhr.send(null);

④給ajax狀態繫結一個回撥函式 xhr.onreadystatechange=function(){};

⑤判斷ajax的狀態是否等於4和xhr.readyState==4 ,就做相應的業務邏輯接收字串(xhr.responseText)或者XML(xhr.responseXML)。