创建一个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);
请注重此处的第一个参数,也就是请求类型,即使在技术层面要求请求类型全部为大写字符,但此处使用小写也是没关系的。
分享到:
相关推荐
例如,创建XMLHttpRequest对象,IE可能使用`new ActiveXObject("Microsoft.XMLHTTP")`,而Firefox则使用`new XMLHttpRequest()`。在处理事件监听器时,IE使用attachEvent,Firefox使用addEventListener。 再者,CSS...
XmlHttp对象参考: 现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
最通用的定义为:XmlHttp是一套可以在...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
最通用的定义为:XmlHttp是... <br>现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
XmlHttp中文参考手册 ...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
XmlHttp是一套可以在Javascript、VbScript...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
这个问题在不同的浏览器中可能会有不同的处理方式,尤其是对于老版本的IE和Firefox。本文将详细讲解如何利用jQuery来实现在页面上显示用户上传的本地图片,同时确保在IE和Firefox等浏览器中的兼容性。 首先,我们...
XMLHTTP CHM 文档 ...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。 XmlHttp对象参考
XMLHTTP对象参考 XmlHttp是什么?...现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。
这个话题涉及到的主要技术是JavaScript,特别是如何使用JavaScript来实现跨浏览器(包括IE、Firefox和Google Chrome)的图片预览功能。下面将详细介绍这一知识点。 首先,我们需要理解浏览器对文件API的支持。现代...
XMLHTTP是 AJAX(异步JavaScript和XML)技术中的核心组件,它允许Web应用程序在不刷新整个页面的情况下与服务器进行通信,实现数据的动态更新。这个参考手册,以HTML格式呈现,详细介绍了XMLHTTP对象的使用方法,...
JavaScript在不同浏览器之间存在一些兼容性问题,尤其是在早期版本的Internet Explorer(IE)和Firefox之间。这些问题主要体现在访问和操作DOM元素、事件处理、属性访问以及函数调用等方面。以下是一些关键点的详细...
现在的绝对多数浏览器都增加了对XmlHttp的支持,IE中使用ActiveXObject方式创建XmlHttp对象,其他浏览器如:Firefox、Opera等通过window.XMLHttpRequest来创建xmlhttp对象。 资源界面:资源下载:
然而,由于浏览器之间的差异,尤其是IE(Internet Explorer)与Firefox(Firefox)对Ajax的支持不尽相同,开发者常常会遇到兼容性问题。这篇博文主要探讨了如何解决Ajax在IE和Firefox上的兼容性问题。 首先,让我们...
通过理解和应用这些兼容性技巧,开发者可以创建在Firefox和其他浏览器中都能正常工作的JavaScript代码。在实际开发过程中,还应考虑使用像jQuery这样的库,它们已经处理了许多浏览器兼容性问题,让开发者能更专注于...
本文将详细讲解如何使用JavaScript实现这一功能,并确保兼容Internet Explorer(IE)和Firefox这两种主流浏览器。 首先,我们需要理解XML(Extensible Markup Language)是一种用于存储和传输结构化数据的标记语言...
这个场景下,我们关注的重点是如何在不依赖用户权限提示的情况下,使用JS在Internet Explorer(IE)和Firefox这两个浏览器中读取XML文件。本文将详细介绍实现这一功能的技术要点。 首先,我们需要了解...
本文将深入探讨如何使用纯JS实现这一功能,同时确保兼容性覆盖到古老的Internet Explorer(IE)和Firefox浏览器。我们首先需要了解的是,浏览器对文件API的支持程度不同,特别是对于IE,我们需要采用一些特殊的技术...
由于浏览器的实现差异,尤其是Firefox和IE之间的兼容性问题,需要特别注意处理方式。以下将详细介绍如何使用JavaScript操作XML文件,并确保在Firefox和IE之间具有良好的兼容性。 1. 创建XMLHttpRequest对象 在...