21. javacript進階程式設計-Ajax與Comet

來源:互聯網
上載者:User

標籤:

1. Ajax與Comet1.1 XMLHttpRequest對象

IE5是第一款引入XHR對象的瀏覽器,IE5中是通過MSXML庫中的一個ActiveX對象實現的。因此在IE中可能存在MSXML2.XMLHttp, MSXML2.XMLHttp.3.0, MSXML2.XMLHttp.6.0,要支援舊瀏覽器,可以使用如下函數:

function createXHR(){

      if(typeof XMLHttpRequest != ‘undefined‘){

             return new XMLHttpRequest();

      }else if(typeof ActiveXObject != ‘undefined‘){

             if(typeof arguments.callee.activeXString !="string"){

                    var versions = [‘MSXML2.XMLHttp.6.0‘,‘MSXML2.XMLHttp.3.0‘,‘MSXML2.XMLHttp‘],i,len;

                    for(i =0 ,len=versions.length;i<len;i++){

                           try{

                                  new ActiveXObject(versions[i]);

                                  arguments.callee.activeXString = versions[i];

                                  break;

                           }cath(ex){

 

                           }

                    }

             }

 

             return new ActiveXObject(arguments.callee.activeXString);

      }else{

             throw new Error(‘NO XHR object.‘);

      }

}

1.2 XHR用法

使用XHR對象,第一個方法是open(),第一個參數表示方法,第二個參數表示請求地址,第三個參數表示是否非同步傳遞資料。

第二步調用send()方法,

第三部根據 返回狀態判斷執行對應方法

(1). 等到伺服器響應後,響應資料會自動填滿XHR對象的屬性。

l responseText:作為響應主體返回的資料

l responseXML:響應內容是XML DOM文檔資料,內容類型是“text/xml”或者“application/xml”

l status:響應的狀態

l statusText:響應的狀態說明

 

(2). 針對非同步請求,可以檢測XHR對象的readyState屬性,

l 0:未初始化

l 1:啟動

l 2:發送

l 3:接收

l 4:完成

 

var xhr = createXHR();

xhr.onreadystatechange = function(){ //必須在open方法前指定

  if(xhr.readystate == 4){

if((xhr.status >=200 && xhr.status < 300)|| xhr.status == 304){

alert(xhr.responseText);

}else{

alert(‘error’);

}

}

}

xhr.open(‘get’,’ex.php’,true);

xhr.send(null);

1.3 GET請求

var xhr = createXHR();

xhr.onreadystatechange = function(){ //必須在open方法前指定

  if(xhr.readystate == 4){

if((xhr.status >=200 && xhr.status < 300)|| xhr.status == 304){

alert(xhr.responseText);

}else{

alert(‘error’);

}

}

}

xhr.open(‘get’,’ex.php?uid=xx’,true); //URL地之後傳遞參數

xhr.send(null);

 

1.4 POST請求

var xhr = createXHR();

xhr.onreadystatechange = function() { //必須在open方法前指定

      if (xhr.readystate == 4) {

             if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304) {

                    alert(xhr.responseText);

             } else {

                    alert(‘error’);

             }

      }

}

xhr.open(‘post’, ’ex.php’, true);

xhr.setRequestHeader("Content-Type","application/x-www-form-urlencoded"); //發送前指定傳輸類型

xhr.send(form.data);//參數在send是傳輸

1.5 跨資源請求

IE8通過XDomainRequest對象支援CORS,其他瀏覽器通過XHR對象原生支援CORS,映像Ping和JSONP是另外兩種跨瀏覽器通訊技術。

21. javacript進階程式設計-Ajax與Comet

相關文章

聯繫我們

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