最新文章專題視頻專題問答1問答10問答100問答1000問答2000關(guān)鍵字專題1關(guān)鍵字專題50關(guān)鍵字專題500關(guān)鍵字專題1500TAG最新視頻文章推薦1 推薦3 推薦5 推薦7 推薦9 推薦11 推薦13 推薦15 推薦17 推薦19 推薦21 推薦23 推薦25 推薦27 推薦29 推薦31 推薦33 推薦35 推薦37視頻文章20視頻文章30視頻文章40視頻文章50視頻文章60 視頻文章70視頻文章80視頻文章90視頻文章100視頻文章120視頻文章140 視頻2關(guān)鍵字專題關(guān)鍵字專題tag2tag3文章專題文章專題2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章專題3
問答文章1 問答文章501 問答文章1001 問答文章1501 問答文章2001 問答文章2501 問答文章3001 問答文章3501 問答文章4001 問答文章4501 問答文章5001 問答文章5501 問答文章6001 問答文章6501 問答文章7001 問答文章7501 問答文章8001 問答文章8501 問答文章9001 問答文章9501
當(dāng)前位置: 首頁 - 科技 - 知識百科 - 正文

解析ajax核心XMLHTTPRequest對象的創(chuàng)建與瀏覽器的兼容問題

來源:懂視網(wǎng) 責(zé)編:小采 時間:2020-11-27 22:52:17
文檔

解析ajax核心XMLHTTPRequest對象的創(chuàng)建與瀏覽器的兼容問題

解析ajax核心XMLHTTPRequest對象的創(chuàng)建與瀏覽器的兼容問題:MLHttpRequest 對象是AJAX功能的核心,要開發(fā)AJAX程序必須從了解XMLHttpRequest 對象開始。 了解XMLHttpRequest 對象就先從創(chuàng)建XMLHttpRequest 對象開始,在不同的瀏覽器中創(chuàng)建XMLHttpRequest 對象使用不同的方法: 先看看IE創(chuàng)建XMLHttp
推薦度:
導(dǎo)讀解析ajax核心XMLHTTPRequest對象的創(chuàng)建與瀏覽器的兼容問題:MLHttpRequest 對象是AJAX功能的核心,要開發(fā)AJAX程序必須從了解XMLHttpRequest 對象開始。 了解XMLHttpRequest 對象就先從創(chuàng)建XMLHttpRequest 對象開始,在不同的瀏覽器中創(chuàng)建XMLHttpRequest 對象使用不同的方法: 先看看IE創(chuàng)建XMLHttp

MLHttpRequest 對象是AJAX功能的核心,要開發(fā)AJAX程序必須從了解XMLHttpRequest 對象開始。

了解XMLHttpRequest 對象就先從創(chuàng)建XMLHttpRequest 對象開始,在不同的瀏覽器中創(chuàng)建XMLHttpRequest 對象使用不同的方法:

先看看IE創(chuàng)建XMLHttpRequest 對象的方法(方法1):

  var xmlhttp=ActiveXobject("Msxml12.XMLHTTP");//較新的IE版本創(chuàng)建Msxml12.XMLHTTP對象

  var xmlhttp=ActiveXobject("Microsoft.XMLHTTP");//較老的IE版本創(chuàng)建Microsoft.XMLHTTP對象

而 Mozilla、Opera、Safari 和大部分非IE的瀏覽器都使用下面這種方法(方法2)創(chuàng)建XMLHttpRequest 對象:

  var xmlhttp=new XMLHttpRequest();

注意:實際上Internet Explorer 使用了一個名為 XMLHttp 的對象,而不是 XMLHttpRequest 對象,而 Mozilla、Opera、Safari 和 大部分非 Microsoft 瀏覽器都使用的是后者(下文統(tǒng)稱 XMLHttpRequest 對象)。IE7開始也開始使用XMLHttpRequest 對象了。

因此我們需要創(chuàng)建一個能兼容多瀏覽器的XMLHTTPRequest對象:

第一種方法:

  var xmlhttp=false;//創(chuàng)建一個新變量并賦值false,使用false作為判斷條件說明還沒有創(chuàng)建XMLHTTPRequest對象

  function CreateXMLHttp(){

  try{

   xmlhttp=new XMLHttpRequest();//嘗試創(chuàng)建 XMLHttpRequest 對象,除 IE 外的瀏覽器都支持這個方法。

}catch(e){

  try{

  xmlhttp=ActiveXobject("Msxml12.XMLHTTP");//使用較新版本的 IE 創(chuàng)建 IE 兼容的對象(Msxml2.XMLHTTP)。

}catch(e){

  try{

  xmlhttp=ActiveXobject("Microsoft.XMLHTTP");//使用較老版本的 IE 創(chuàng)建 IE 兼容的對象(Microsoft.XMLHTTP)。

}catch(failed){

    xmlhttp=false;//如果失敗了還保持false

}

}

}

return xmlhttp;

}

判斷是否成功的例子:

if(!xmlhttp){

 創(chuàng)建xmlhttp失敗

}else{

 創(chuàng)建xmlhttp成功

}

第二種方法:
 if(typeof(XMLHttpRequest)=="undefined" && window.ActiveXObject){

  function XMLHttpRequest(){

  var xmlhttp_arr=["MSXML2.XMLHTTP","Microsoft.XMLHTTP"];

  var xmlhttp;

  for(i=0;i<xmlhttp_arr.length;i++){

   if(xmlhttp=new ActiveXObject(xmlhttp_arr[i]))

   break;

}

  return xmlhttp;

}

}

//這個是除了IE之外的瀏覽器創(chuàng)建XMLHttpRequest對象

var xmlhttp=new XMLHttpRequest();

創(chuàng)建xmlhttp成功后,然后再來看看它的一些屬性和方法吧,還有最重要的onreadystatechange事件句柄

 方法:

 open() 初始化http請求參數(shù),包括URL和http方法,但是不發(fā)送請求;

 abort() 取消當(dāng)前響應(yīng),關(guān)閉連接并斷開所有網(wǎng)絡(luò)未結(jié)束的活動;

 getAllResponseHeaders() 把http響應(yīng)頭部作為未解析字符串返回;

 getResponseHeaders) 返回指定的http響應(yīng)頭的值;

 send() 發(fā)送http請求使用傳遞給open()方法的參數(shù),以及傳個該方法的可選請求體;

 setResponseHeader() 向一個打開但沒有發(fā)送的請求設(shè)置或添加一個Http請求。

 屬性:

 readyState 說明http請求的狀態(tài);(有5個狀態(tài)分別是

 0 表示沒有初始化;

 1 表示讀取中

 2 表示已讀取

 3 交互中(接受中)

 4 完成

)

 responseText 說明為服務(wù)器接收到得響應(yīng)體,如果沒有接收到數(shù)據(jù)就返回空字符串;

 responseXML 說明對請求的回應(yīng) 解析為XML并用document對象返回;

 status 說明http請求的狀態(tài);

 statusText 說明http請求狀態(tài)不是以數(shù)字形式而是用名稱;

 onreadystatechange 是readySate狀態(tài)改變時調(diào)用事件的函數(shù)。

下面是一個發(fā)送請求數(shù)據(jù)并返回結(jié)果的xmlhttpRequest對象;

 生成一個XMLHTTPRequest對象

 var xmlhttp=CreatXMLHttp();
 xmlhttp.open("get","http://www.gxlcms.com/jaryle",true);
 xmlhttp.onReadyStateChange=getresult;
//怎么告訴XMLHttpRequest 對象狀態(tài)變化時讓誰來處理這個變化呢用到二種方法:一種是匿名方法xmlhttp.onReadyStateChange=function(){處理變化的代碼}
另一種方法:指定方法:xmlhttp.onReadyStateChange=getresult;
    function getresult(){處理變化的代碼}
 xmlhttp.send();
 function getresult(){
 if(xmlhttp.readyState==4){ //當(dāng)readyState的狀態(tài)等于4時表示接收到數(shù)據(jù)
 if(xmlhttp.status==200){ //這個時候就需要用到status屬性,即由服務(wù)器返回的 HTTP 狀態(tài)代碼。 xmlhttp.status 等于200時表示傳輸過程完整沒有錯誤
 alert(xmlhttp.responseText);
}
}
 }

注意:所以我們應(yīng)該按照上面的流程來記憶:創(chuàng)建XMLHttpRequest 對象 -> 指定發(fā)送地址及發(fā)送方法 -> 指定狀態(tài)變化處理方法 -> 發(fā)送請求,請求發(fā)送后狀態(tài)變化了就會自動調(diào)用指定的處理方法。

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com

文檔

解析ajax核心XMLHTTPRequest對象的創(chuàng)建與瀏覽器的兼容問題

解析ajax核心XMLHTTPRequest對象的創(chuàng)建與瀏覽器的兼容問題:MLHttpRequest 對象是AJAX功能的核心,要開發(fā)AJAX程序必須從了解XMLHttpRequest 對象開始。 了解XMLHttpRequest 對象就先從創(chuàng)建XMLHttpRequest 對象開始,在不同的瀏覽器中創(chuàng)建XMLHttpRequest 對象使用不同的方法: 先看看IE創(chuàng)建XMLHttp
推薦度:
標(biāo)簽: 創(chuàng)建 瀏覽器 兼容
  • 熱門焦點

最新推薦

猜你喜歡

熱門推薦

專題
Top