Ajax技術原理分析

來源:互聯網
上載者:User

可以說Ajax不是一項技術,而是一種Web互動的操作模式。同時,Ajax並不是這兩年出現的什麼新東西,因為所有實現Ajax應用程式的組件都已經在我們的瀏覽器裡存在若干年了。

下面的時序圖可以清晰的展現Ajax技術在用戶端與伺服器之間往返交換資料的過程。

Ajax通過瀏覽器內建的XMLHttpRequest對象與伺服器端互動,但需要注意的是,不同的瀏覽器,建立XMLHttpRequest對象的方法可能不相同,使用下面的代碼應該可以保證在絕大多數的瀏覽器中建立此對象:

/**//*
 * Returns a new XMLHttpRequest object, or false if this browser
 * doesn't support it
 */
function newXMLHttpRequest() 
...{
  var xmlreq = false;
  if (window.XMLHttpRequest) 
  ...{
    // Create XMLHttpRequest object in non-Microsoft browsers
    xmlreq = new XMLHttpRequest();
  } 
  else if (window.ActiveXObject) 
  ...{
    // Create XMLHttpRequest via MS ActiveX
    try 
    ...{
      // Try to create XMLHttpRequest in later versions
      // of Internet Explorer
      xmlreq = new ActiveXObject("Msxml2.XMLHTTP");
    } 
    catch (e1) 
    ...{
      // Failed to create required ActiveXObject
      try 
      ...{
        // Try version supported by older versions
        // of Internet Explorer
        xmlreq = new ActiveXObject("Microsoft.XMLHTTP");
      } 
      catch (e2) 
      ...{
        // Unable to create an XMLHttpRequest with ActiveX
      }
    }
  }
  return xmlreq;
}

XMLHttpRequest對象readyState屬性的意義在於表示一次Ajax請求的生命週期狀態,它從0(代表“未初始化”)變化到4(代表“完成”)。每次readyState屬性變化時,readystatechange事件就觸發,則由onreadystatechange屬性指定的事件處理回呼函數就被調用。

XMLHttpRequest對象status屬性的意義在於查看請求是否成功完成。status屬性指向伺服器響應的HTTP狀態返回碼。在執行簡單的GET和POST請求時,可以假設任何大於200的返回碼都是錯誤的。

如果伺服器發送重新導向響應(例如301或302),瀏覽器會透明地進行重新導向並從新的位置擷取資源;XMLHttpRequest看不到重新導向的狀態代碼。而且,瀏覽器會自動添加"Cache-Control: no-cache"頭資訊到所有XMLHttpRequest,這樣用戶端代碼永遠也不用處理304(未經修改)伺服器響應。

需要注意的是,只有當HTTP狀態返回碼為200(OK狀態)時,才表示伺服器處理結果正確返回,然後才能執行用戶端響應代碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.