XMLHTTPRequest对象使AJAX成为可能。
XMLHTTPRequest
XMLHTTPRequest对象是AJAX的关键。
该对象在InternetExplorer5.5与年7月发布之后就已经可用了,但是在人们开始讨论AJAX和Web2.0之前,这个对象并没有得到充分的认识。
创建XMLHTTPRequest对象
不同的浏览器使用不同的方法来创建XMLHTTPRequest对象。
InternetExplorer使用ActiveXObject。
其他浏览器使用名为XMLHTTPRequest的JavaScript内建对象。
要克服这个问题,可以使用这段简单的代码:
varXMLHTTP=null
if(window.XMLHTTPRequest)
{
XMLHttp=newXMLHTTPRequest()
}
elseif(window.ActiveXObject)
{
XMLHttp=newActiveXObject(Microsoft.XMLHTTP)
}
代码解释:
1.首先创建一个作为XMLHttpRequest对象使用的XMLHTTP变量。把它的值设置为null。
2.然后测试window.XMLHTTPRequest对象是否可用。在新版本的Firefox,Mozilla,Opera以及Safari浏览器中,该对象是可用的。
3.如果可用,则用它创建一个新对象:XMLHttp=newXMLHTTPRequest()
4.如果不可用,则检测window.ActiveXObject是否可用。在InternetExplorerversion5.5及更高的版本中,该对象是可用的。
5.如果可用,使用它来创建一个新对象:XMLHTTP=newActiveXObject()
改进的例子
一些程序员喜欢使用最新最快的版本的XMLHTTPRequest对象。
下面的例子试图加载微软最新版本的Msxml2.XMLHTTP,在InternetExplorer6中可用,如果无法加载,则后退到Microsoft.XMLHTTP,在InternetExplorer5.5及其后版本中可用。
functionGetXmlHTTPObject()
{
varxmlHTTP=null;
try
{
//Firefox,Opera8.0+,Safari
xmlHttp=newXMLHTTPRequest();
}
catch(e)
{
//InternetExplorer
try
{
xmlHttp=newActiveXObject(Msxml2.XMLHTTP);
}
catch(e)
{
xmlHttp=newActiveXObject(Microsoft.XMLHTTP);
}
}
returnxmlHTTP;
}
代码解释:
1.首先创建用作XMLHttpRequest对象的XMLHTTP变量。把它的值设置为null。
2.按照web标准创建对象(Mozilla,Opera以及Safari):XMLHttp=newXMLHTTPRequest()
3.按照微软的方式创建对象,在InternetExplorer6及更高的版本可用:XMLHttp=newActiveXObject(Msxml2.XMLHTTP)
4.如果捕获错误,则尝试更老的方法(InternetExplorer5.5):XMLHttp=newActiveXObject(Microsoft.XMLHTTP)