中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

ajax核心XMLHTTPRequest對象的創建與瀏覽器的兼容問題是怎樣的

發布時間:2021-10-08 11:47:09 來源:億速云 閱讀:120 作者:柒染 欄目:web開發

今天就跟大家聊聊有關ajax核心XMLHTTPRequest對象的創建與瀏覽器的兼容問題是怎樣的,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。

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

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

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

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

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

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

 var xmlhttp=new XMLHttpRequest();

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

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

第一種方法:

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

 function CreateXMLHttp(){

 try{

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

}catch(e){

 try{

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

}catch(e){

 try{

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

}catch(failed){

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

}

}

}

return xmlhttp;

}

判斷是否成功的例子:

if(!xmlhttp){

 創建xmlhttp失敗

}else{

 創建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之外的瀏覽器創建XMLHttpRequest對象

var xmlhttp=new XMLHttpRequest();

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

 方法:

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

 abort() 取消當前響應,關閉連接并斷開所有網絡未結束的活動;

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

 getResponseHeaders) 返回指定的http響應頭的值;

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

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

 屬性:

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

 0 表示沒有初始化;

 1 表示讀取中

 2 表示已讀取

 3 交互中(接受中)

 4 完成

)

 responseText 說明為服務器接收到得響應體,如果沒有接收到數據就返回空字符串;

 responseXML 說明對請求的回應 解析為XML并用document對象返回;

 status 說明http請求的狀態;

 statusText 說明http請求狀態不是以數字形式而是用名稱;

 onreadystatechange 是readySate狀態改變時調用事件的函數。

下面是一個發送請求數據并返回結果的xmlhttpRequest對象;

 生成一個XMLHTTPRequest對象

var xmlhttp=CreatXMLHttp();
 

xmlhttp.open("get","https://www.jb51.net/jaryle",true);
 

xmlhttp.onReadyStateChange=getresult;
//怎么告訴XMLHttpRequest 對象狀態變化時讓誰來處理這個變化呢用到二種方法:一種是匿名方法xmlhttp.onReadyStateChange=function(){處理變化的代碼}
另一種方法:指定方法:xmlhttp.onReadyStateChange=getresult;
 

function getresult(){處理變化的代碼}
 

xmlhttp.send();
 

function getresult(){
 

if(xmlhttp.readyState==4){ //當readyState的狀態等于4時表示接收到數據
 

if(xmlhttp.status==200){ //這個時候就需要用到status屬性,即由服務器返回的 HTTP 狀態代碼。 xmlhttp.status 等于200時表示傳輸過程完整沒有錯誤
 

alert(xmlhttp.responseText);
}
}
 

}

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

看完上述內容,你們對ajax核心XMLHTTPRequest對象的創建與瀏覽器的兼容問題是怎樣的有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

开远市| 桓仁| 寿宁县| 华安县| 光山县| 仲巴县| 西乡县| 铜梁县| 马鞍山市| 石林| 苍梧县| 连平县| 文成县| 左云县| 景东| 从化市| 庆安县| 兴文县| 兴安县| 元朗区| 古田县| 溆浦县| 西盟| 三河市| 灵石县| 阿拉善左旗| 双桥区| 乡城县| 隆安县| 蒙山县| 赣州市| 封开县| 灵宝市| 扎兰屯市| 永吉县| 磴口县| 黑龙江省| 靖宇县| 清水县| 罗甸县| 怀远县|