`
kankan1218
  • 浏览: 272416 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

IE与Firefox下XMLHttp的创建

    博客分类:
  • ajax
阅读更多
创建一个XMLHttp对象

  显然,使用一个XMLHttp对象的第一步,是要创建它,因为Microsoft对此的实现是ActiveX控件,所以你也必须在JavaScript中使用ActiveXObject的所有者类,并传递给它一个XMLHttp控件的签名:

  var oXmlHttp = new ActiveXObject("Microsoft.XMLHttp");

  上述代码创建了XMLHttp对象的第一个版本(其与IE 5.0一同发布),问题是,随着后续MSXML库的发布,也发布了好几个不同的新版本,每次发布都带来了更好的稳定性与更快的速度,所以,必须要确定你使用的是用户电脑上可用的最新版本。每个版本的签名如下:

Microsoft.XMLHttp

MSXML2.XMLHttp

MSXML2.XMLHttp.3.0

MSXML2.XMLHttp.4.0

MSXML2.XMLHttp.5.0

  不幸的是,确定可用最佳版本唯一的方法,是依次尝试创建它们。因为其本身为一个ActiveX控件,任何创建对象上的失败,都会抛出一个错误,这意味着你必须在一个try…catch块中编写这些代码,如下:

function createXMLHttp() {

var aVersions = [ "MSXML2.XMLHttp.5.0",

"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",

"MSXML2.XMLHttp","Microsoft.XMLHttp"

];

for (var i = 0; i < aVersions.length; i ) {

try {

var oXmlHttp = new ActiveXObject(aVersions[i]);

return oXmlHttp;

} catch (oError) {

//Do nothing

}

}

throw new Error("未安装MSXML!");

}
 
 函数createXMLHttp()中保存了一个XMLHttp签名的数组,经常使用的靠前,并遍历此数组以尝试用每个签名创建一个XMLHttp对象。假如创建失败,catch语句将会捕捉到一个JavaScript错误,并尝试下一个签名。当对象被创建后,它将被返回给调用者,假如函数结束时仍没有创建一个XMLHttp对象,将会抛出一个错误指出创建失败。

  幸好,在以上浏览器中创建一个XMLHttp对象还算是比较轻易的,Mozilla Firefox、Safari和Opera都可以使用下面这行代码:

  var oXmlHttp = new XMLHttpRequest();

  自然地,它以一种跨浏览器的方式帮助开发者创建XMLHttp对象。你还可以修改前面定义过的createXMLHttp()函数,生成一个如下的函数:

function createXMLHttp() {

if (typeof XMLHttpRequest != "undefined") {

return new XMLHttpRequest();

} else if (window.ActiveXObject) {

var aVersions = [ "MSXML2.XMLHttp.5.0",

"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",

"MSXML2.XMLHttp","Microsoft.XMLHttp"

];

for (var i = 0; i < aVersions.length; i ) {

try {

var oXmlHttp = new ActiveXObject(aVersions[i]);

return oXmlHttp;

} catch (oError) {

//Do nothing

}

}

}

throw new Error("不能创建XMLHttp对象!");

}
  
现在,这个函数先检查是否定义了一个XMLHttpRequest类(使用typeof操作符),假如类XMLHttpRequest存在,它将被用于创建XMLHttp对象;否则,函数检查ActiveXObject类是否存在,假如存在,就执行一遍为IE创建XMLHttp对象相同的过程。假如以上两个测试都失败了,就会抛出一个错误。

  另一种创建跨浏览器XMLHttp对象的方法,就是使用已为跨浏览器编写的类库:zXml。它由两位作者编写,可从http://www.nczonline.net/downloads/处下载,库中定义了一个创建XMLHttp对象的单一函数:

  var oXmlHttp = zXmlHttp.createRequest();

  函数createRequest与zXml库本身,将会贯穿全文,以帮助处理有关跨浏览器的Ajax技术。

  在创建完一个XMLHttp对象之后,便可预备从JavaScript中发起HTTP请求。首先调用open()方法,由其完成对象的初始化,此方法接受以下三个参数:

  1、 请求类型:指示某种请求类型的字符串,GET或POST(这也是目前所有浏览器都支持的类型)。

  2、 URL:请求将发送到的某URL。

  3、 异步(Async):一个布尔值,由其决定请求是否异步。

  最后一个代表异步的参数,在此非常重要,因为它控制了JavaScript怎样执行请求。当设置为true时,请求被异步发送,JavaScript代码不会等待响应而继续执行,必须设置一个事件处理函数以监视对请求的响应。假如设置为false,请求被同步发送,而JavaScript会在继续执行代码之前等待来自服务器的响应;这意味着假如响应需要很长时间,那么用户将不能操作浏览器,直至响应完成。因此,开发Ajax应用程序最好的方法是,对数据的常规返回操作,尽量使用异步请求,而同步请求用于发送和接收与服务器之间的短小信息。

  如对某一info.txt文件的异步GET请求,代码如下:

  var oXmlHttp = zXmlHttp.createRequest();

  oXmlHttp.open("get", "info.txt", true);

  请注重此处的第一个参数,也就是请求类型,即使在技术层面要求请求类型全部为大写字符,但此处使用小写也是没关系的。
分享到:
评论

相关推荐

    XmlHttp.rar_firefox_opera_xmlhttp

    XmlHttp对象参考: 现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XMLHTTP对象参考手册

    最通用的定义为:XmlHttp是一套可以在...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XmlHttp对象参考

    最通用的定义为:XmlHttp是... &lt;br&gt;现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XmlHttp中文参考手册

    XmlHttp中文参考手册 ...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XMLHttp中文参考手册.rar

    XmlHttp是一套可以在Javascript、VbScript...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XMLHTTP.CHM

    XMLHTTP CHM 文档 ...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。 XmlHttp对象参考

    XMLHTTP对象参考

    XMLHTTP对象参考 XmlHttp是什么?...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    e语言-Ajax XmlHttp对象参考手册

     现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。 资源界面:资源下载:

    ajax教程HTML文档

    XmlHttp是什么? 最通用的定义为:XmlHttp...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    ajax帮助文档

    XmlHttp是什么? 最通用的定义为:XmlHttp...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    css3.rar_ActiveXObject_opera

    现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    XMLHttpRequest中文参考手册

    现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。

    用于网站的用ajax写的树,现在最流行的

    //针对IE以外的其他浏览器创建的 主要是FireFox xmlrequest=new XMLHttpRequest(); }else if(window.ActiveXObject) { //主要针对IE浏览器的不同版本 try{ xmlrequest=new ActiveXObject("Msxml2.XMLHTTP");...

    Ajax+PHP简单基础入门实例教程

    这行简单的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中,创建了 XMLHttpRequest 对象。但是对于市场占有率达到70%的IE来说,这种方法是不行的,而...

    js(javascript)获取网页源码

    //FireFox、Opera等浏览器支持的创建方式 } else { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");//IE浏览器支持的创建方式 } } //直接通过XMLHttpRequest对象获取远程网页源代码 function getSource()...

    AJAX XMLHttpRequest对象创建使用详解

    所有现代浏览器(IE7+、Firefox、Chrome、Safari以及Opera)均内建XMLHttpRequest对象。 注:IE5/IE6需要使用ActiveRequest对象。 向服务器发送请求 xmlhttp.open(“GET”,”ajax_info.txt”,true); xmlhttp.send...

    Ajax PHP简单入门教程代码

    这行简单的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中,创建了 XMLHttpRequest 对象。但是对于市场占有率达到70%的IE来说,这种方法是不行...

    浅谈JS原生Ajax,GET和POST

    javascript/js的ajax的GET请求: [removed] /* 创建 XMLHttpRequest... // code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else{// code for IE6, IE5  xmlhttp=new ActiveXObj

    原生 JS Ajax,GET和POST 请求实例代码

    javascript/js的ajax的GET请求代码如下所示: [removed] ... // code for IE7+, Firefox, Chrome, Opera, Safari  xmlhttp=new XMLHttpRequest();  }else{// code for IE6, IE5  xmlhttp=new Act

Global site tag (gtag.js) - Google Analytics