AJAX是「Asynchronous JavaScript and XML」的縮寫。他是指一種建立交互式網頁應用的網頁開發技術。、javascript
客戶端與服務器,能夠在【沒必要刷新整個瀏覽器】的狀況下,與服務器進行異步通信的技術html
AJAX應用和傳統Web應用有什麼不一樣?
請介紹一下XMLhttprequest對象
Ajax的核心是JavaScript對象XmlHttpRequest。該對象在Internet Explorer 5中首次引入,它是一種支持異步請求的技術。簡而言之,XmlHttpRequest使您可使用JavaScript向服務器提出請求並處理響應,而不阻塞用戶。經過XMLHttpRequest對象,Web開發人員能夠在頁面加載之後進行頁面的局部更新前端
經常使用的方法就是黑色粗體的前三個java
open():該方法建立http請求jquery
setRequestHeader(String header,String value):設置消息頭(使用post方式纔會使用到,get方法並不須要調用該方法)web
send(content):發送請求給服務器面試
readyState:請求狀態readyState一改變,回調函數被調用,它有5個狀態ajax
上面有兩個地方都說起了回調函數,回調函數是什麼??小程序
回調函數就是接收服務器返回的內容!segmentfault
Ajax的實現流程是怎樣的?
<script type="text/javascript"> var httpRequest; function checkUsername() { if(window.XMLHttpRequest) { //在IE6以上的版本以及其餘內核的瀏覽器(Mozilla)等 httpRequest = new XMLHttpRequest(); }else if(window.ActiveXObject) { //在IE6如下的版本 httpRequest = new ActiveXObject(); } //建立http請求 httpRequest.open("POST", "Servlet1", true); //由於我使用的是post方式,因此須要設置消息頭 httpRequest.setRequestHeader("Content-type", "application/x-www-form-urlencoded"); //指定回調函數 httpRequest.onreadystatechange = response22; //獲得文本框的數據 var name = document.getElementById("username").value; //發送http請求,把要檢測的用戶名傳遞進去 httpRequest.send("username=" + name); } function response22() { //判斷請求狀態碼是不是4【數據接收完成】 if(httpRequest.readyState==4) { //再判斷狀態碼是否爲200【200是成功的】 if(httpRequest.status==200) { //獲得服務端返回的文本數據 var text = httpRequest.responseText; //把服務端返回的數據寫在div上 var div = document.getElementById("result"); div.innerText = text; } } } </script>
AJAX請求總共有多少種CALLBACK
Ajax請求總共有八種Callback
有,IE中經過new ActiveXObject()獲得,Firefox中經過newXMLHttpRequest()獲得
AJAX有哪些有點和缺點?
優勢:
缺點:
請解釋一下 JavaScript 的同源策略。
同源策略是客戶端腳本(尤爲是Javascript)的重要的安全度量標準。它最先出自Netscape Navigator2.0,其目的是防止某個文檔或腳本從多個不一樣源裝載。所謂同源指的是:協議,域名,端口相同,同源策略是一種安全協議,指一段腳本只能讀取來自同一來源的窗口和文檔的屬性。
闡述一下異步加載JS。
參考資料:
如何解決跨域問題?
理解跨域的概念:協議、域名、端口都相同才同域,不然都是跨域
出於安全考慮,服務器不容許ajax跨域獲取數據,可是能夠跨域獲取文件內容。
AJAX跨域的問題可參考:
Ajax 解決瀏覽器緩存問題?
若是文章有錯的地方歡迎指正,你們互相交流。習慣在微信看技術文章的同窗, 能夠關注微信公衆號:Java3y