JavaScript 學習筆記— —Ajax(一)

來源:互聯網
上載者:User

標籤:

Ajax 應用程式所用到的基本技術:

  • HTML 用於建立 Web 表單並確定應用程式其他部分使用的欄位。
  • JavaScript 代碼是運行 Ajax 應用程式的核心代碼,協助改進與伺服器應用程式的通訊。
  • DHTML 或 Dynamic HTML,用於動態更新表單。我們將使用 divspan 和其他動態超文字標記語言 元素來標記 HTML。
  • 文件物件模型 DOM 用於(通過 JavaScript 代碼)處理 HTML 結構和(某些情況下)伺服器返回的 XML。
Ajax 世界中的請求/響應

Ajax的原理簡單來說通過XmlHttpRequest對象來向伺服器發非同步請求,從伺服器獲得資料,然後用javascript來操作DOM而更新頁面。這其中最關鍵的一步就是從伺服器獲得請求資料。要清楚這個過程和原理,我們必須對XMLHttpRequest有所瞭解。

XMLHttpRequest是ajax的核心機制,它是在IE5中首先引入的,是一種支援非同步請求的技術。簡單的說,也就是javascript可以及時向伺服器提出請求和處理響應,而不阻塞使用者。達到無重新整理的效果。

   所以我們先從XMLHttpRequest講起,來看看它的工作原理。

   首先,我們先來看看XMLHttpRequest這個對象的屬性。

    它的屬性有:

    onreadystatechange     每次狀態改變所觸發事件的事件處理常式。

    responseText          從伺服器處理序返回資料的字串形式。

    responseXML              從伺服器處理序返回的DOM相容的文檔資料對象。

    status                       從伺服器返回的數字代碼,比如常見的404(未找到)和200(已就緒)

    status Text                伴隨狀態代碼的字串資訊

    readyState                 對象狀態值

    0 (未初始化) 對象已建立,但是尚未初始化(尚未調用open方法)

    1 (初始化) 對象已建立,尚未調用send方法

    2 (發送資料) send方法已調用,但是當前的狀態及http頭未知

    3 (資料傳送中) 已接收部分資料,因為響應及http頭不全,這時通過responseBody和responseText擷取部分資料會出現錯誤,

    4 (完成) 資料接收完畢,此時可以通過通過responseXml和responseText擷取完整的回應資料

現在我們介紹了 Ajax,對 XMLHttpRequest 對象以及如何建立它也有了基本的瞭解。如果閱讀得很仔細,您可能已經知道與伺服器上的 Web 應用程式打交道的是 JavaScript 技術,而不是直接提交給那個應用程式的 HTML 表單。

還缺少什麼呢?到底如何使用 XMLHttpRequest。因為這段代碼非常重要,您編寫的每個 Ajax 應用程式都要以某種形式使用它,先看看 Ajax 的基本請求/響應模型是什麼樣吧。

發出請求

您已經有了一個嶄新的 XMLHttpRequest 對象,現在讓它幹點活兒吧。首先需要一個 Web 頁面能夠調用的 JavaScript 方法(比如當使用者輸入文本或者從菜單中選擇一項時)。接下來就是在所有 Ajax 應用程式中基本都雷同的流程:

  1. 從 Web 表單中擷取需要的資料。
  2. 建立要串連的 URL。
  3. 開啟到伺服器的串連。
  4. 設定伺服器在完成後要啟動並執行函數。
  5. 發送請求。
function ajax(url, fnSucc, fnFaild){    //1.建立Ajax對象    var oAjax=null;        if(window.XMLHttpRequest)    {        oAjax=new XMLHttpRequest();    }    else    {        oAjax=new ActiveXObject("Microsoft.XMLHTTP");    }        //2.串連伺服器    oAjax.open(‘GET‘, url, true);        //3.發送請求    oAjax.send();        //4.接收伺服器的返回    oAjax.onreadystatechange=function ()    {        if(oAjax.readyState==4)    //完成  對象狀態值,0—未初始化 1—正在載入  2—載入完畢 3—互動 4—完成        {            //status 從伺服器返回的數字代碼,比如常見的404(未找到)和200 請求成功(其後是對GET和POST請求的應答文檔)            if(oAjax.status==200)//成功            {                fnSucc(oAjax.responseText);//從伺服器處理序返回資料的字串形式。            }            else            {                if(fnFaild)                    fnFaild(oAjax.status);            }        }    };}
<!DOCTYPE html><html><head lang="en"><meta charset="UTF-8"><title></title>    <script src="ajax.js"></script><script>window.onload=function(){    var btn=document.getElementById("btn");    btn.onclick=function(){        //ajax(‘abc.txt‘,function(data){        ajax(‘abc.txt?t=‘+new Date().getTime(),function(data){//?t=‘+new Date().getTime() 阻止緩衝            alert(data)        })    }}</script></head><body><button id="btn">讀取檔案</button></body></html>

 

JavaScript 學習筆記— —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.