1、ajax是什麼?(asynchronous javascript and xml)
異步的javascript和xml。
在傳統(沒有使用ajax技術)的web應用當中,
當用戶點擊提交按鈕,提交了某個頁面,此時,
瀏覽器會將表單中的數據打包之後發送給服務器,
同時,瀏覽器會將整個頁面銷毀。用戶只能等
待服務器返回一個新的頁面,不能做其它任何事情。
為了解決傳統的web應用當中的”等待-響應-等待“
的弊端,需要瀏覽器可以通過異步的方式向服務器
發請求。ajax技術可以讓瀏覽器異步地向服務器發
請求:其本質是通過瀏覽器內置的一個對象(
XmlHttpRequest)異步地向服務器發請求(發送請求
的同時,瀏覽器不會銷毀之前的頁面,此時,用戶
仍然可以對之前的頁面做其它的操作,也就是說,
不打斷用戶的操作)。服務器返回一些數據(不是一個
新的頁面,是部分的數據)給XmlHttpRequest對象,
接下來,通過dom操作(需要使用服務器
返回的數據,可以通過XmlHttpRequest對象獲得),
來更新頁面。整個過程,頁面無刷新。
2、ajax編程
1) XmlHttpRequest對象:
a,如何獲得XmlHttpRequet對象
因為XmlHttpRequest沒有標準化,所以
要區分瀏覽器來獲得該對象。
function getXhr(){
var xhr = null;
if(window.XMLHttpRequest){
//非ie瀏覽器
xhr = new XMLHttpRequest();
}else{
//ie瀏覽器
xhr = new ActiveXObject(“Microsoft.XMLhttp”);
}
return xhr;
}
b,常用的屬性
onreadystatechange:註冊監聽器(即給
XmlHttpRequest對象綁訂事件處理代碼)。
responseText:獲得服務器返回的文本數據。
responseXML:獲得服務器返回的xml數據。
status:獲得狀態碼
readyState:XmlHttpRequest對象與服務器通訊
過程當中的狀態,其值是一個整數(0,1,2,3,4),
比如當值為4時,表示該對象已經接收到了
服務器返回的所有數據。
2)編程步驟:
step1 獲得XmlHttpRequest對象
var xhr = getXhr();
step2 發送請求
a,發送get請求
//open方法有三個參數:
//第一個參數:請求方式 get,post
//第二個參數:請求地址,如果是get請求,請求
//參數要加在請求地址後面。
//第三個參數:true表示異步請求,false同步請求。
xhr.open(‘get’,’check_name.do?name=zs’,true);
//註冊一個監聽器
xhr.onreadystatechange=f1;
xhr.send(null);
b,發送post請求
xhr.open(‘post’);
…
step3 服務器端編寫處理請求的代碼
step4 在監聽器當中,處理服務器返回的數據,
一般是通過XmlHttpRequest獲得數據之後,更
新頁面。
function f1(){
//只有狀態為4時,才能正確地接收服務器
//返回的數據
if(xhr.readyState == 4){
//獲得服務器返回的文本數據
var txt = xhr.responseText;
//通過dom,更新頁面
…
}
}