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方法,但是不發送請求;