AJAX筆記
這篇博文主要的知識理論來源於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筆記