ajax是一種用來改善用戶體驗的技術,其本質是利用瀏覽器提供的一個對象(XMLHttpRequest,也可稱之爲ajax對象) 向服務器發送異步請求;服務器返回部分數據(不是一個完整 的頁面),瀏覽器利用這些數據對當前頁面作部分更新; 整個過程,頁面無刷新,不打斷用戶的操做。ajax
注意1:異步請求,指的是,當ajax對象發請求時,瀏覽器不會銷燬當前頁面,用戶仍然能夠對當前頁面作其它的操做。 編程
注意2:打電話能夠當作是同步請求,發短信能夠當作是異步請求瀏覽器
注意3:AJAX 不是一門的新的語言,而是對現有技術的綜合利用;本質是在HTTP協議的基礎上以異步的方式與服務器進行通訊。服務器
獲取ajax對象源代碼app
a. onreadystatechange:綁訂一個事件處理函數, 該函數用來處理readystatechange事件。
注:當ajax對象的readystate屬性值發生了改變, 好比,從0變成了1,則會產生readystatechange事件。
b. readyState:有5個值(0,1,2,3,4),表示ajax對象與服務器通訊的進展。其中,4表示ajax對象已經得到了服務器返回的全部的數據。
c. responseText:得到服務器返回的文本數據。
d. responseXML:得到服務器返回的xml數據。
e. status:得到狀態碼。異步
step1. 得到ajax對象。
好比 var xhr = getXhr();
step2. 發送請求。
方式一: get請求
xhr.open('get', 'checkuname.do?uname=Sally',true); xhr.onreadystatechange = f1; xhr.send(null);ide
參數1:請求方式函數
參數2:請求地址post
參數3:異步仍是同步
true:異步請求(默認是異步請求,二貨才用ajax來實現同步請求【特殊狀況除外】)
false:同步請求(當ajax對象發送請求時,瀏覽器會鎖 定當前頁面,用戶不可以對當前頁面作任何操做)。
方式二: post請求
xhr.open('post','checkuname.do');url
xhr.setRequestHeader('content-type', 'application/x-www-form-urlencoded');
xhr.onreadystatechange = f1; xhr.send('uname=Sally'); 注: 按照http協議要求,若是發送的是post請求, 在請求數據包裏面,應該包含有content-type消息頭; 默認狀況下,ajax對象不會添加該消息頭,因此須要 調用setRequestHeader方法來添加。 step3. 編寫服務器端的程序。經過只須要返回部分 數據(再也不須要返回完整的頁面)。 step4. 寫事件處理函數。 例如: function f1(){ if(xhr.readyState == 4 && xhr.status == 200){ //得到服務器返回的數據 var txt = xhr.responseText; //更新頁面 ... } }