Ajax,全名為Ajax-Asynchronous JavaScript and Xml。是實(shí)現(xiàn)客戶(hù)端與服務(wù)器端異步交互的主要手段,主要使用在B/S架構(gòu)上。
一.在瀏覽器中一般分為同步交互和異步交互兩種交互模式。
同步交互:
客戶(hù)端向服務(wù)器端發(fā)送請(qǐng)求,到服務(wù)器端進(jìn)行響應(yīng),這個(gè)過(guò)程中,用戶(hù)是不能做任何其他事情(只能等)。
異步交互:
客戶(hù)端向服務(wù)器端發(fā)送請(qǐng)求,直到服務(wù)器端進(jìn)行響應(yīng),這個(gè)過(guò)程中,用戶(hù)可以做任何其他事情(不用等)。
二.同步交互和異步交互的區(qū)別:
同步交互:
1.執(zhí)行速度相對(duì)異步交互慢。
2.響應(yīng)的是完整的HTML頁(yè)面。
異步交互:
1.執(zhí)行速度相對(duì)同步交互要快。
2.響應(yīng)的是部分?jǐn)?shù)據(jù)。
三.Ajax核心對(duì)象-----XMLHttpRequest對(duì)象,Ajax所有的屬性和方法以及事件都需要在XMLHttpRequest對(duì)象中進(jìn)行調(diào)用。
四.如何創(chuàng)建Ajax核心對(duì)象
固定套路,就是先定義一個(gè)一個(gè)創(chuàng)建XMLHttpRequest對(duì)象的函數(shù),在用變量去調(diào)用該函數(shù)進(jìn)行創(chuàng)建。
五.Ajax常用的屬性、方法及事件
屬性:
readyState - 服務(wù)器端的響應(yīng)狀態(tài)
status - 服務(wù)器端狀態(tài)碼
responseText - 服務(wù)器端返回的文本內(nèi)容
responseXML - 服務(wù)端返回的XML格式數(shù)據(jù)
方法:
abort() - 請(qǐng)求
getAllRequestHeaders() - 獲取響應(yīng)的所有http頭
getRequestHeader() - 獲取指定響應(yīng)的http頭
setRequestHeader() - 設(shè)置指定請(qǐng)求的http頭
open(method,url) - 創(chuàng)建鏈接
method:get/post(常用)
send() - 發(fā)送鏈接
如果open的method為get,send里的參數(shù)為null
事件:
onreadystatechange - 監(jiān)聽(tīng)事件
當(dāng)服務(wù)器的狀體改變是就會(huì)觸發(fā)該數(shù)據(jù)(readyState);
六.實(shí)現(xiàn)Ajax的異步交互步驟
創(chuàng)建XMLHttpRequest核心對(duì)象
固定寫(xiě)法 - 獨(dú)立編寫(xiě)
與服務(wù)器端建立連接
使用XMLHttpRequest對(duì)象的open(method,url)方法
method - 設(shè)置當(dāng)前請(qǐng)求的類(lèi)型
url - 設(shè)置當(dāng)前請(qǐng)求的地址
向服務(wù)器端發(fā)送請(qǐng)求
使用XMLHttpRequest對(duì)象的send(請(qǐng)求參數(shù))方法
請(qǐng)求參數(shù)的格式 - key=value
接收服務(wù)器端的響應(yīng)數(shù)據(jù)
使用XMLHttpRequest對(duì)象的onreadystatechange事件,監(jiān)聽(tīng)服務(wù)器端的通信狀態(tài)
使用XMLHttpRequest對(duì)象的readyState屬性,判斷服務(wù)器端的當(dāng)前狀態(tài)(0-4)
使用XMLHttpRequest對(duì)象的status屬性,判斷服務(wù)器端的狀態(tài)碼(200)
使用XMLHttpRequest對(duì)象的responseText屬性,接收服務(wù)器端的響應(yīng)數(shù)據(jù)