Ajax核心技術之XMLHttpRequest對象,ajaxxmlhttprequest

來源:互聯網
上載者:User

Ajax核心技術之XMLHttpRequest對象,ajaxxmlhttprequest

  XMLHttpRequest對象到底是什嗎?跟Ajax到底有什麼聯絡?在瞭解它之前還是要先瞭解一下Ajax的功能。與以往的技術不同,Ajax是為了實現非同步作業。

         那麼關於非同步,好像一個管理者安排好一個專案計劃後,將這個項目交給下屬去做,而自己再繼續做自己應該做的其他的事兒。在下屬去完成這個項目的過程中,並不影響此管理者的工作狀態或者進程。只是等到項目完成交付時,管理者進行驗收即可。那麼這裡的下屬在非同步作業中就相當於中的Ajax引擎,為了方便理解,也可以直接理解為XMLHttpRequest對象,二者並不衝突。

   ,在非同步作業是時,通過Ajax引擎來進行提交和接收資料,而在此過程中XMLHttpRequest對象則負責非同步資料的檢索,也就是說,它的主要功能是負責在非同步作業中,後台與伺服器之間進行交換資料。

    那麼在使用此對象時,和其他對象使用方法一樣,首先要進行建立,針對於IE和W3C兩種不同的標準,支援的組件不同,需要對其建立過程進行封裝。

 //1.建立XMLHttpRequest對象                if (window.XMLHttpRequest) {                    xmlhttp=new XMLHttpRequest();                    if (xmlhttp.overrideMimeType) {                        xmlhttp.overrideMimeType("text/xml");                    }                }else if (window.ActiveXObject) {                    var activexName=["MSXML.2.XMLHTTP.6.0","MSXML.2.XMLHTTP.5.0",                                    "MSXML.2.XMLHTTP.4.0","MSXML.2.XMLHTTP.3.0",                                    "MSXML.2.XMLHTTP","Miscrosoft.XMLHTTP"];                    for (var i = 0; i <activexName.length; i++) {                        try {                            xmlhttp=new ActiveXObject(activexName[i]);                        } catch (e) {                            }                    }                }                if (xmlhttp==undefined || xmlhttp==null) {                    alert("當前瀏覽器不支援建立XMLHttpRequest對象,請更換瀏覽器");                    return;                }

二、XMLHttpRequest對象使用的五步操作法

       1、建立(上面代碼封裝好的)

       2、為對象註冊回調方法,以便與伺服器進行互動

            xmlhttp.onreadystatechange=callback;

       3、4、擷取參數向伺服器端提交資料

        var userName=document.getElementById("UserName").value;

提交的方式有兩種:

//3.設定和伺服器端互動的相應參數      xmlhttp.open("GET","Ajax?name=" + userName,true );                    //4.設定向伺服器端發送的資料,啟動和伺服器端的交 xmlhttp.send(null);//POST方式進行提交//3.設定和伺服器端互動的相應參數 xmlhttp.open("POST", "Ajax", true);  //post方式互動所需要增加的代碼xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //4.設定向伺服器端發送的資料,啟動和伺服器端的互動xmlhttp.send("name=" + userName);

5、接收,判斷是否成功即回呼函數的編寫

function callback(){                    if (xmlhttp.readyState == 4) {                    //表示和伺服器端的互動已經完成                    if (xmlhttp.status==200) {                        //表示和伺服器的響應代碼是200,正確的返回了資料                        //純文字資料的接受方法                         var message =xmlhttp.responseText;                        //Xml資料對應的Dom對象的接受方法                        //使用的前提是,伺服器端需要設定content-type為text/xml                        //var domXml=xmlhttp.responseXML;                        //向div標籤中填充常值內容的方法                        var div=document.getElementById("message");                        div.innerHTML=message;                    }                }            }

     在這裡涉及到了get和post兩種用戶端提交方式,從代碼中能明顯的看出二者之間的不同之處。Get方式會將參數直接顯示在連結中,不安全,post方式則通過send在後台進行提交。那麼在伺服器端二者有什麼不同呢?在XMLHttp對象中在伺服器端接收這兩者並沒有什麼區別,都是通過processRequest方法進行接收,通過request對象擷取用戶端提交的參數,通過response來對用戶端的請求作出響應。具體使用總結見下篇部落格。







聯繫我們

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