Ajax能夠不用從新加載整個頁面,與服務器交換數據並更新頁面的局部內容。減小服務器端的壓力。javascript
Ajax的原理簡單來講經過XmlHttpRequest對象來向服務器發異步請求,從服務器得到數據,而後用javascript來操做DOM而更新頁面。這其中最關鍵的一步就是從服務器得到請求數據。java
首先,咱們先來看看XMLHttpRequest這個對象的屬性。瀏覽器
它的屬性有:服務器
onreadystatechange 每次狀態改變所觸發事件的事件處理程序。異步
responseText 從服務器進程返回數據的字符串形式。async
responseXML 從服務器進程返回的DOM兼容的文檔數據對象。函數
status 從服務器返回的數字代碼,好比常見的404(未找到)和200(已就緒)url
status Text 伴隨狀態碼的字符串信息spa
readyState 對象狀態值code
0 (未初始化) 對象已創建,可是還沒有初始化(還沒有調用open方法)
1 (初始化) 對象已創建,還沒有調用send方法
2 (發送數據) send方法已調用,可是當前的狀態及http頭未知
3 (數據傳送中) 已接收部分數據,由於響應及http頭不全,這時經過responseBody和responseText獲取部分數據會出現錯誤,
4 (完成) 數據接收完畢,此時能夠經過經過responseXml和responseText獲取完整的迴應數據
Ajax的建立過程:
一、建立XMLHttpRequest對象;
二、建立一個http請求,用open(method,url,async);
三、設置響應http狀態變化的函數;
四、發送http請求;
五、獲取異步調用返回的數據;
六、使用JS和DOM實現局部刷新。
代碼實現:
var xmlhttp; function createXMLHttpRequest(){ var xmlhttp; if (window.XMLHttpRequest){ xmlhttp=new xmlHttpRequest(); //Netscape瀏覽器中的建立方式 }else{ xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");//IE瀏覽器的建立方式 } //異步調用服務器段數據 if(xmlhttp!=null){ xmlhttp.open("GET/POST",url,true); //建立HTTP請求 xmlhttp.onreadystatechange=httpStateChange;//設置HTTP請求狀態變化的函數 xmlhttp.send(null); //發送請求 }else{ alert("不支持XHR") } } //響應HTTP請求狀態變化的函數 function httpStateChange(){//判斷異步調用是否完成 if(xmlhttp.readyState==4 && xmlhttp.status==200){ //判斷異步調用是否成功,若是成功開始局部更新數據 //code... } }