Ajax基礎入門

來源:互聯網
上載者:User

標籤:位置   擷取   get   logs   status   charset   title   代碼執行   ==   

1.什麼是ajax

全稱:Asynchronous JavaScript and XML(用非同步形式的JavaScript去操作XML) 用來傳輸進行資料互動==其實就是拿資料發資料。

2.應用

Ajax就是做到當頁面內容發生改變的時候能不重新整理頁面,就能把改變告知我們。比如,我們註冊的時候資訊填寫錯誤,是不是沒重新整理頁面就能直接看到資訊提示,比如我們玩QQ的時候,有什麼訊息都會提醒你,絲毫沒有重新整理頁面,絲毫沒有影響你幹別的事情,這就是Ajax做的事情。

3.具體步驟

(1)建立ajax對象

var xhr = new XMLHttpRequest(); 

(2)佈建要求資訊

xhr.open(method,url,async);
method:請求的類型;GET 或 POST
url:檔案在伺服器上的位置
async:true(非同步)或 false(同步)

(3)提交請求

xhr.send();

(4)等待伺服器返回內容

xhr.onreadystatechange = function() {  //彈出內容} 

4.具體例子

 1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4     <meta charset="UTF-8"> 5     <title>TestAjax</title> 6 <script type="text/javascript"> 7     function loadXMLDoc() 8     { 9         var xhr;10         if (window.XMLHttpRequest)11         {// code for IE7+, Firefox, Chrome, Opera, Safari12             xhr=new XMLHttpRequest();13         }14         else15         {// code for IE6, IE516             xhr=new ActiveXObject("Microsoft.XMLHTTP");17         }18         xhr.open("GET","hello.txt",true);19         xhr.send();20         xhr.onreadystatechange=function()21         {22             if (xhr.readyState==4 && xhr.status==200)23             {24                 document.getElementById("myDiv").innerHTML=xhr.responseText;25             }26         }27     }28 </script>29 </head>30 <body>31 <h2>AJAX</h2>32 <button type="button" onclick="loadXMLDoc()">請求資料</button>33 <div id="myDiv"></div>34 </body>35 </html>                                                                        
點擊按鈕"請求資料" 會在id="myDiv"的div下顯示出hello.txt的內容(不會重新整理整個頁面)
說明:
1.html和txt檔案在同一個目錄下
2.
建立的ajax對象實際是存在相容問題的,IE6以下沒有這個對象的,所以是擷取不到資料的,IE6以下用的實際是一個外掛程式的方式:

ActiveXObject(‘Microsoft.XMLHTTP‘) //ActiveXObject: IE6下外掛程式的總稱,包含很多外掛程式
//Microsoft.XMLHTTP:具體某個外掛程式的名字

  所以我們需要對上面做一個相容性的處理:


var xhr = null;if(window.XMLHttpRequest){ //加window是因為如果直接判斷IE下不存在的東西會報錯,加了window,就是在判斷一個屬性是否存在,這樣就不會報錯了(當然我們都知道所有的東西都在window對象下,所以這樣判斷是有效)xhr = new XMLHttpRequest();}else{xhr = new ActiveXObject(‘Microsoft.XMLHTTP‘);}

3.在上面的代碼中xhr.send()提交請求是需要時間的,所以必須要等到一定時間提交成功後,我們後面的才能正確擷取到內容,所以這就是後面的代碼正確執行,依賴於前面,但是如果用同步的話,
我們後面那些不依賴這些前面代碼的代碼也沒辦法執行,體驗就不好了,所以我們選擇用非同步,而對於這些依賴前面代碼執行的代碼,我們就進行判斷

  if (xhr.readyState==4 && xhr.status==200)

  就是判斷如果資料響應到了,收到了,再彈出內容。(如果我們不判斷,按照非同步原理,就會立馬彈出來,擷取資料需要時間,因為實際還沒擷取到資料,所以會彈出空,怕誤解,所以這裡我     再強調下).

Ajax基礎入門

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.