AJAX筆記整理
AJAX: Asynchronous JavaScript and XML,非同步的Javascirpt和Xml。
Asynchronous:非同步
與之對應的是 synchronous:同步,我們要知道這裡的同步和非同步指的是什麼?
同步互動:指一個時間段內只能有一個程序在執行,當傳送一個請求時,必須等待結果的返回,才能傳送下一請求。
非同步互動:指一個時間段內可以有多個程序在執行,即不需要等待返回,隨時可以傳送下一個請求。
JavaScript:整個技術的核心。
Xml:主要儲存和傳輸資料
AJAX到底是什麼?
AJAX 是一種用於建立快速動態網頁的技術,通過在後臺與伺服器進行少量資料交換。
AJAX最大的用處是什麼?
AJXA可以使網頁非同步更新,這意味著可以在不重新載入整個網頁的情況下,對網頁的某部分進行更新。而傳統的網頁不使用AJAX,如果需要更新,需要過載整個頁面。
這就是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 發生變化。
|
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)。