JavaScript基礎-----Ajax

1.什麼是Ajax:

    AJAX是“Asynchronous JavaScript and XML”的縮寫。他是指一種創建交互式網頁應用的網頁開發技術。

    Ajax包含下列技術:

  • 基於web標準(standards-based presentation)XHTML+CSS的表示;

  • 使用 DOM(Document Object Model)進行動態顯示及交互;

  • 使用 XML 和 XSLT 進行數據交換及相關操作;

  • 使用 XMLHttpRequest 進行異步數據查詢、檢索;

  • 使用 JavaScript 將所有的東西綁定在一起

2.Ajax應用程序的優勢:

  • 1. 通過異步模式,提升了用戶體驗

  • 2. 優化了瀏覽器和服務器之間的傳輸,減少不必要的數據往返,減少了帶寬佔用

  • 3. Ajax引擎在客戶端運行,承擔了一部分本來由服務器承擔的工作,從而減少了大用戶量下的服務器負載

3.Ajax最大的特點:

        Ajax可以實現動態不刷新(局部刷新)

4.XMLHttpRequest對象的常用方法和屬性:

            open(“method”,”URL”) 建立對服務器的調用,第一個參數是HTTP請求    方式可以爲GET,POST或任何服務器所支持的您想調用的方式。

第二個參數是請求頁面的URL地址

         status    服務器的HTTP狀態碼,200 ---> ok  400 ---> not found

  • send()方法:發送具體請求

  • abort()方法:停止當前請求

  • readyState:存有服務器響應的狀態信息。

    • 0: 請求未初始化(代理被創建,但尚未調用 open() 方法)
    • 1: 服務器連接已建立(open方法已經被調用)
    • 2: 請求已接收(send方法已經被調用,並且頭部和狀態已經可獲得)
    • 3: 請求處理中(下載中,responseText 屬性已經包含部分數據)
    • 4: 請求已完成,且響應已就緒(下載操作已完成)
  • responseText 屬性 : 服務器的響應,獲得字符串形式的響應數據(數據體內容)

  • reponseXML 屬性 :服務器的響應,表示爲XML

5.Ajax的優點和缺點:

    優點:        

  • 1、最大的一點是頁面無刷新,用戶的體驗非常好。

  • 2、使用異步方式與服務器通信,具有更加迅速的響應能力。

  • 3、可以把以前一些服務器負擔的工作轉嫁到客戶端,利用客戶端閒置的能力來處理,減輕服務器和帶寬的負擔,節約空間和寬帶租用成本。並且減輕服務器的負擔,ajax的原則是“按需取數據”,可以最大程度的減少冗餘請求,和響應對服務器造成的負擔。

  • 4、基於標準化的並被廣泛支持的技術,不需要下載插件或者小程序

    缺點:

  • 1、ajax不支持瀏覽器back按鈕。

  • 2、安全問題 AJAX暴露了與服務器交互的細節。

  • 3、對搜索引擎的支持比較弱。

  • 4、破壞了程序的異常機制。

  • 5、不容易調試

6. Jquery 實現 Ajax 的主要步驟:

$.ajax({
    url: 'URL地址,默認是當前頁面',
    type: '規定請求的類型(GET 或 POST)',
    dataType: '預期的服務器響應的數據類型',
    async : '布爾值,表示請求是否異步處理。默認是 true'
    data: {
       規定要發送到服務器的數據   
    },
    success: function(){
       當請求成功時運行的函數  
    },
    error: function(){
       當請求失敗時運行的函數   
    }
 })

7. 原生js 實現Ajax的主要步驟:

//先處理兼容性問題
var xhr = null;
if(window.MLHttpRequest){
   xhr = new XMLHttpRequest();    //其他瀏覽器
}else{
   xhr = new ActiveXObject("Microsoft.XMLHTTP")     //老版本的IE瀏覽器
}                
    xhr.onreadystatechange = function() {
      // readyState == 4說明請求已完成
      if (xhr.readyState == 4 && xhr.status == 200{ 
        // 從服務器獲得數據 
        console.log(xhr.responseText);  
      }
    };
    xhr.open('GET/POST', url地址, true);    //GET發送信息時直接加參數到url即可,比如url?a= & b=b1
    xhr.send();
  },
  // 請求格式爲POST時,必須要寫http頭,發送信息至服務器時內容編碼類型
  // xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");  

8.原生js實現對ajax的封裝:

//封裝ajax,這裏以GET請求爲例
function ajax(url,fnSucc,fnErr){      //ajax中傳遞3個參數(請求地址,請求成功的回調函數,請求失敗的回調函數)
   //處理兼容性
   if(window.XMLHttpRequest){
      xhr = new XMLHttpRequest(); 
   }else{
      xhr = new ActiveXObject("Microsoft.XMLHTTP") 
   }
   //onload爲完成時
   xhr.onload = function(){
       if(xhr.readyState === 4 && xhr.status === 200){
          fnSucc(xhr.responseText)
       }else{
          fnErr(xhr.status)
       }
   }
   //或者還可以這樣寫
   xhr.onreadystatechange = function(){
       if(xhr.readyState === 4){
          if(xhr.status === 200){
              fnSucc(xhr.responseText) 
          }else{
              fnErr(xhr.status)
          }
       }
   }
   xhr.open("GET",url,true)
   xhr.send()
}
//調用ajax函數
ajax(url地址,function(str){
   console.log("請求成功")
},function(){
   console.log("請求失敗")
})
發佈了35 篇原創文章 · 獲贊 20 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章