1. 程式人生 > >AJAX筆記

AJAX筆記

不同的 status 如果 resp xpl body net 觸發 交換

這篇博文主要的知識理論來源於W3School,具體網址如下:http://www.w3school.com.cn/ajax/ajax_xmlhttprequest_create.asp

我從中摘取了我覺得重要和理解了的部分,算是相對於我個人的基礎理論知識精簡版

AJAX 是一種用於創建快速動態網頁的技術,通過在後臺與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

XMLHttpRequest 是 AJAX 的基礎,XMLHttpRequest 用於在後臺與服務器交換數據。這意味著可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

創建對象:


variable=new XMLHttpRequest();(新版本)
首先創建XMLHttpRequest 對象:

variable=new ActiveXObject("Microsoft.XMLHTTP");(老版本的Internet Explorer (IE5 和 IE6)使用 ActiveX 對象)

為了應對所有的現代瀏覽器,包括 IE5 和 IE6,請檢查瀏覽器是否支持 XMLHttpRequest 對象。如果支持,則創建 XMLHttpRequest 對象。如果不支持,則創建 ActiveXObject :

var xmlhttp; if (window.XMLHttpRequest) {

// code for IE7+, Firefox, Chrome, Opera, Safarixmlhttp=new XMLHttpRequest(); } else {

// code for IE6, IE5xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); }

向服務器發送請求:

如前文所說,XMLHttpRequest對象用於和服務器交換數據,如需將請求發送到服務器,我們使用 XMLHttpRequest 對象的 open() 和 send() 方法:

open(method,url,async)

規定請求的類型、URL 以及是否異步處理請求。

method:請求的類型;GET 或 POST

url:文件在服務器上的位置

async:true(異步)或 false(同步)

send(string)

將請求發送到服務器

string:僅用於 POST 請求

兩者的區別和優劣勢:

與 POST 相比,GET 更簡單也更快,並且在大部分情況下都能用。

然而,在以下情況中,請使用 POST 請求:

l 無法使用緩存文件(更新服務器上的文件或數據庫)

l 向服務器發送大量數據(POST 沒有數據量限制)

l 發送包含未知字符的用戶輸入時,POST 比 GET 更穩定也更可靠

值得一提的是,XMLHttpRequest 對象如果要用於 AJAX 的話,其 open() 方法的 async 參數必須設置為 true:

onreadystatechange 事件:

每當 readyState 改變時,就會觸發 onreadystatechange 事件,readyState 屬性存有 XMLHttpRequest 的狀態信息,有以下幾個不同的變化:

l 0: 請求未初始化

l 1: 服務器連接已建立

l 2: 請求已接收

l 3: 請求處理中

l 4: 請求已完成,且響應已就緒

狀態信息有以下兩種:

200: "OK"

404: 未找到頁面

當 readyState 等於 4 且狀態為 200 時,表示響應已就緒:

xmlhttp.readyState==4 && xmlhttp.status==200

服務器響應:

如需獲得來自服務器的響應,請使用 XMLHttpRequest 對象的 responseText 或 responseXML 屬性。

responseText

獲得字符串形式的響應數據。

responseXML

獲得 XML 形式的響應數據。

如果來自服務器的響應並非 XML,請使用 responseText 屬性,如果來自服務器的響應是 XML,而且需要作為 XML 對象進行解析,請使用 responseXML 屬性。

AJAX筆記