首 页   · 站长博客 · 用户注册 · 会员登陆  · 会员排行  ·最新主题  ·最近回复  精华区  版权声明  ·论坛管理
  当前登录身份:游客,请先登录。  笔名: 口令: 验证码:   
楼 主  index »  Ajax/xAjax技术专区 » XMLHttpRequest与ActiveXObject  


  作者:lather
  注册时间:2005-04-21
  主题/回复:37/63
  积分:1079
  等级:★★★☆(七级)
  称号:论坛贤士

  lather@lather.co..
  66584152
  www.ent.bj.cn/

 

 发表:2008-01-14 17:09:41 阅读 4214 次 回复 3 次 得分3  |   字号 字色
XMLHttpRequest与ActiveXObject
哈哈,我也写书!

一个Ajax交互是从一个名为XMLHttpRequest的JavaScript对象开始的, 实际上就是创建并调用XMLHttpRequest对象。下面我们介绍一下如何创建这个对象。

19.1.3.1 XMLHttpRequest对象
创建XMLHttpRequest对象很简单,如下:
<script language="javascript" type="text/javascript">
var ajaxHttp = new XMLHttpRequest();
</script>
上面是一段简单的Javascript代码,直接创建了一个XMLHttpRequest对象。需要特别说明的是,这个对象只能在IE以外的浏览器中创建。

19.1.3.2 ActiveXObject对象
在Microsoft IE浏览器上创建XMLHttpRequest对象的方法如下:
var xmlHttp = false; //声明一个变量
//使用不同版本的MSXML创建对象
try {
  ajaxHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    ajaxHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    ajaxHttp = false;
  }
}
您需要牢记下面这两行代码:
ajaxHttp = new ActiveXObject("Msxml2.XMLHTTP");

ajaxHttp = new ActiveXObject("Microsoft.XMLHTTP");
这两行代码基本上就是尝试使用一个版本的 MSXML 创建对象,如果失败则使用另一个版本创建该对象。如果都不成功,则将 ajaxHttp变量设为 false,告诉您的代码出现了问题。如果出现这种情况,可能是因为安装了非 Microsoft 浏览器,创建对象方法请阅读19.1.3.1。

接下来我们我们构建一个初始化Ajax的函数,使其既能支持Microsoft IE浏览器也能支持非Microsoft IE浏览器,代码如下:
/**
* 初始化一个XMLHttpRequest对象
*/
function InitAjax()
{
 var ajaxHttp=false;
  //尝试创建Microsoft IE浏览器支持的对象
 try { 
  ajaxHttp = new ActiveXObject("Msxml2.XMLHTTP"); 
 } catch (e) { 
  try { 
   ajaxHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
  } catch (E) { 
   ajaxHttp = false; 
  } 
 }
  //如果创建不成功,则尝试创建非Microsoft IE浏览器支持的对象
 if (!ajaxHttp && typeof XMLHttpRequest!='undefined') { 
  ajaxHttp = new XMLHttpRequest(); 
 } 
 return ajaxHttp;
}
那么我们在执行任何Ajax操作之前,都必须先调用InitAjax()函数来实例化一个Ajax对象。

 
 1#楼  
 
  回复人:INP
  注册时间:2004-04-05
  主题/回复:12/38
  积分:516
  等级:★★☆(五级)
  称号:略有小成

用户联系方式已设置为保密
 1#楼 发表于2008-03-27 21:33:11  评分:1 

回复给楼主(lather)

你好,XMLHttpRequest对象在ie7上是可以直接创建的。但在ie6及以前则不能创建,而且很琐碎。 
请测试。 
 2#楼  
 
  回复人:一起PHP
  注册时间:2004-02-27
  主题/回复:247/1521
  积分:4649
  等级:★★★★★☆(十一级)
  称号:论坛圣人

   
 2#楼 发表于2008-03-28 08:11:56  评分:1 

回复给楼主(lather)
INP现在对此果然有研究?
 3#楼  
 
  回复人:lc0633
  注册时间:2007-08-08
  主题/回复:1/8
  积分:427
  等级:★★☆(五级)
  称号:略有小成

   
 3#楼 发表于2009-03-02 10:38:02  评分:1 

代码如下:
XMLHttpRequest与ActiveXObject 
回复给楼主(lather)
学习一下了
  页数1/1首页 « 1 » 末页
  发表回复:您还没有登陆,无法发表回复。请先[登陆]

一起PHP技术联盟 主办:一起PHP 联系方式:站长QQ:4304410 QQ群:8423742 20159565 站长博客 E-mail: nqp@nqp.me 执行时间:0.006sec
SimsmaBBS 2008 (v6.0) Developed by 17php.com,Copyright(C)2003-2010 All rights reserved. 副本授权:一起PHP官方专用版