ajax不是一種新的編程語言,而是一種異步請求數據的web開發技術,對於改善用戶的體驗和頁面性能頗有幫助;具備同步、異步兩種請求方式。一般狀況下異步請求使用更多,在不須要從新刷新頁面的狀況下,Ajax 經過異步請求加載後臺數據,並在網頁上呈現出來。web
同步ajax
異步:多件事情一塊兒作,有多條線。編程
異步過程示意圖json
同步過程示意圖小程序
異步過程示意圖api
同步過程示意圖瀏覽器
(1)設置請求參數(請求方式,請求頁面的相對路徑,是否異步)服務器
(2)使用 onreadystatechange 設置回調函數網絡
(3)發送請求,經過readyState 屬性監聽ajax請求狀態異步
(4)判斷響應報文的狀態,若爲200說明服務器正常運行並返回響應數據
var ajax_request= function () { var xhr = null; if(window.XMLHttpRequest){ xhr = new XMLHttpRequest();// 標準瀏覽器 }else{ xhr = new ActiveXObject('Microsoft.XMLHTTP');//非標準瀏覽器IE6/7/8 } var type = 'post'; var myurl = 'http://yapi.demo.qunar.com/mock/34006/ajaxjson'; var async = true;//true表示異步,false表示同步 xhr.onreadystatechange=function(){//監聽請求結果 if(xhr.readyState == 4)//瀏覽器經過readyState參數監聽和服務器的交互狀況 { console.log('...') if(xhr.status==200)//status參數表示http請求的狀態碼,用來判斷請求是否成功 { console.log(xhr)//請求完成後的回調函數 }else{ alert(oAjax.status+" NotFound"); } } } xhr.open(type,myurl,async);//設置請求參數 var param = JSON.stringify({ "user":$("#registerCity").val() }) xhr.send(param);//發送請求 };
ajax 是一項用於異步拉取數據的技術,這對須要延遲加載數據和觸發式加載數據的頁面有很大益處
應用場景:搜索聯想詞提示、視頻網站中文字與海報的異步加載、地圖應用等等。
(代碼演示)
無刷新更新數據。 ajax最大優勢就是能在不刷新整個頁面的前提下與服務器通訊維護數據。這使得web應用更爲迅捷地響應用戶交互,並避免了在網絡上發送冗餘信息,減小用戶等待時間,優化用戶體驗。
異步與服務器通訊。 ajax使用異步方式與服務器通訊,不須要打斷用戶的操做,具備更加迅速的響應能力。優化了客戶端和服務器之間的溝通,減小沒必要要的數據傳輸、時間及下降網絡上數據流量。
基於標準被普遍支持。 ajax基於標準化的並被普遍支持的技術,不須要下載瀏覽器插件或者小程序,但須要客戶容許JavaScript在瀏覽器上執行。
界面與應用分離。 ajax使web中的界面與應用分離(也能夠說是數據與呈現分離),有利於分工合做、減小非技術人員對頁面的修改形成的web應用程序錯誤、提升效率、也更加適用於如今的發佈系統。
ajax破壞瀏覽器back機制。 在動態更新頁面的狀況下,用戶沒法回到前一個頁面狀態,由於瀏覽器僅能記憶歷史記錄中的靜態頁面。但用戶一般會但願單擊後退按鈕可以取消他們的前一次操做,可是在ajax應用中沒法實現。
ajax增大網絡數據的流量。 ajax會增大網絡數據的流量,從而下降整個系統的性能。
ajax不能很好支持移動設備。