我认为 Ajax 的核心是 XMLHTTP(视不同的浏览器,说法不同),它实现了在“后台”与服务器通信的功能。
在不同的浏览器以及不同的版本中,对 XMLHTTP 的支持也不同,所以本来很简单的一个对象,我们却不得不用大量的代码来适应不同的浏览器。
function CreateHTTPObject()
{
var xmlhttp;
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlhttp = false;
}
}
if (!xmlhttp && typeof(XMLHttpRequest) != "undefined")
{
try
{
xmlhttp = new XMLHttpRequest();
}
catch (e)
{
xmlhttp = false;
}
}
if (!xmlhttp && window.createRequest)
{
try
{
xmlhttp = window.createRequest();
}
catch (e)
{
xmlhttp = false;
}
}
return xmlhttp;
}
在上述代码中,将创建 XMLHTTP 的程序封装成一个函数,以兼容不同的浏览器。建议大家把上述代码拷贝起来,需要时直接使用,避免再去写。
实际上大多数浏览器只使用两类对象,如果您觉得没有必要,也可以采用如下的代码。
function CreateHTTPObject()
{
if (window.ActiveXObject)
{
return new ActiveXObject("Microsoft.XMLHTTP");
}
else if (window.XMLHttpRequest)
{
return new XMLHttpRequest();
}
return false;
}
好了,说了那么多,也该说到应用了。
XMLHTTP[Ctrl+A 全部选择 提示:您可先修改部分代码,再按运行]
程序向 http://www.itpow.com/style/common.css 发出请求,如果目标存在,那么在默认设置下,IE、Netscape、Firefox、Opera 中均可以看到一个样式表被显示出来了。
注意:如果您把这段代码拷到其它地方,可能只有在 IE 中看得到效果,这是由于在其它浏览器中阻止了读取其它站点数据的原因,如果我们把http://www.itpow.com/style/common.css改为对应站点的文件,同样又可以看到效果。
我们在下一节请逐步讲解 XMLHTTP 的应用,我们建议您先参考:XMLHTTP 速查。