AJAX 異步加載技術


AJAX = 異步 JavaScript 和 XML。

AJAX 是一種用於創建快速動態網頁的技術。

通過在后台與服務器進行少量數據交換,AJAX 可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。

傳統的網頁(不使用 AJAX)如果需要更新內容,必需重載整個網頁面。

XMLHttpRequest 是 AJAX 的基礎

variable=new XMLHttpRequest(); //創建XMLHttpRequest

對於老版本瀏覽器,可能會不支持X
MLHttpRequest,這時候需要
variable=new ActiveXObject("Microsoft.XMLHTTP");


var xmlhttp;
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }
 
        

XMLHttpRequest 對象用於和服務器交換數據

open(method,url,async)

規定請求的類型、URL 以及是否異步處理請求。

  • method:請求的類型;GET 或 POST
  • url:文件在服務器上的位置
  • async:true(異步)或 false(同步)

send(string)

將請求發送到服務器。

  • string:僅用於 POST 請求
xmlhttp.open("GET","test1.txt",true);
xmlhttp.send();

當文件非常大的時候就需要使用post,並且post比get更穩定

setRequestHeader(header,value)

向請求添加 HTTP 頭。

  • header: 規定頭的名稱
  • value: 規定頭的值 

(這個setRequestHeader然我聯想到,python的request.get())

open() 方法的 url 參數是服務器上文件的地址:

xmlhttp.open("GET","ajax_test.asp",true);
該文件可以是任何類型的文件,比如 .txt 和 .xml,或者服務器腳本文件,比如 .asp 和 .php (在傳回響應之前,能夠在服務器上執行任務)。

服務器響應

responseText : 獲得字符串形式的響應數據。

responseXML : 獲得 XML 形式的響應數據。

綜合上面知識點,我們可以分析以下代碼:

function loadXMLDoc()
{
  var xmlhttp;
  if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
      xmlhttp=new XMLHttpRequest();
  }
  else {  // code for IE6, IE5
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  } //這里整個條件判斷都是用來申請異步內容
  xmlhttp.onreadystatechange=function(){
      if (xmlhttp.readyState==4 && xmlhttp.status==200){
          document.getElementById("myDiv").innerHTML=xmlhttp.responseText; //獲得字符串響應,並且在id="myDiv"下顯示
      }
  }
  xmlhttp.open("GET","/ajax/test1.txt",true);  //與服務器進行交互
  xmlhttp.send();
}

 

onreadystatechange 事件

當請求被發送到服務器時,我們需要執行一些基於響應的任務。

每當 readyState 改變時,就會觸發 onreadystatechange 事件。

readyState 屬性存有 XMLHttpRequest 的狀態信息。

onreadystatechange:存儲函數(或函數名),每當 readyState 屬性改變時,就會調用該函數。

readyState:

存有 XMLHttpRequest 的狀態。從 0 到 4 發生變化。

  • 0: 請求未初始化
  • 1: 服務器連接已建立
  • 2: 請求已接收
  • 3: 請求處理中
  • 4: 請求已完成,且響應已就緒

status:

200: "OK"

404: 未找到頁面

 

當 readyState 等於 4 且狀態為 200 時,表示響應已就緒:

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM