不同浏览器中XMLHttpRequest对象的创建

07-12-10 17:18   View:1134

//取得一个XmlHttpRequest提交一个URL返回的内容,书写一个javascript方法如下:
function gethttp(url)
{
 var oXMLHttpRequest = false;
 if(window.XMLHttpRequest)
 {//如果是Mozilla浏览器
  oXMLHttpRequest = new XMLHttpRequest();
  if(oXMLHttpRequest.overrideMimeType)
  {
  oXMLHttpRequest.overrideMimeType("text/html");
  }
 }
 else if(window.ActiveXObject)
 {
   try
   {
    oXMLHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
   }
   catch(e)
   {
    try
   {
    oXMLHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
   }
   catch(e)
   {
   }

   }
 }
 if(!oXMLHttpRequest)
 {
  window.alert("不能创建对象实例!");
  return;
 }
 try
 {
  oXMLHttpRequest.Open("GET",url,false);
  oXMLHttpRequest.Send();
  var text = oXMLHttpRequest.responseText;
  return text;
 }
 catch(e)
 {
   return "";
 }
}

在IE6测试通过可在IE7测试无法通过,因为IE7在兼容firefox方面做了一些尝试,但却产生了bug,需要先判断IE,然后判断firefox才能得以通过,由于各种浏览器对象的不同性,可将原方法改造如下:

function gethttp(url)
{
 var xmlhttp = false;
 var text = "";
    if(window.ActiveXObject)
    {
 //如果是IE浏览器
    var ieArr=["MSXML2.XMLHTTP","Microsoft.XMLHTTP","Msxml2.XMLHTTP.6.0","Msxml2.XMLHTTP.3.0"];   

  for(i=0;i < 1;i++)
  {
     var objstr = ieArr[i];
     //alert(objstr);
   try
   {
    xmlhttp = new ActiveXObject(objstr);
   }
   catch(e)
   {
    alert(e);
   }   
   if(xmlhttp)
   {
    break;
   }   
    }
     if(!xmlhttp)
  {
   window.alert("不能创建对象实例!");
   return "";
  }
  try
  {
   xmlhttp.Open("GET",url,false);
   xmlhttp.Send();
   text = xmlhttp.responseText;
   return text;
  }
  catch(e)
  {
   alert(e);
   return "";
  }
   }
   else if(window.XMLHttpRequest)
   {
   //如果是Mozilla浏览器
  xmlhttp = new XMLHttpRequest();
  if(xmlhttp.overrideMimeType)
  {
   xmlhttp.overrideMimeType("text/html");
  }
  if(!xmlhttp)
  {
   window.alert("不能创建对象实例!");
   return "";
  }
  try
  {
   //alert(xmlhttp);
   xmlhttp.open("GET",url,true); 
   xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
   xmlhttp.send(null);
   //alert(xmlhttp.responseText)
   text = xmlhttp.responseText;
   //alert(text);
   return text;
  }
  catch(e)
  {
   alert(e);
   return "";
  }
   }
}


Main Feeds

Copyright © 2003-2007 by 方继祥