【 tulaoshi.com - Web开发 】
结合起来
关键是要支持所有浏览器。谁愿意编写一个只能用于InternetExplorer或者非Microsoft浏览器的应用程序呢?或者更糟,要编写一个应用程序两次?当然不!因此代码要同时支持InternetExplorer和非Microsoft浏览器。清单4显示了这样的代码。
清单4.以支持多种浏览器的方式创建XMLHttpRequest对象
/*CreateanewXMLHttpRequestobjecttotalktotheWebserver*/
varxmlHttp=false;
/*@cc_on@*/
/*@if(@_jscript_version=5)
try{
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
}catch(e){
try{
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
}catch(e2){
xmlHttp=false;
}
}
*/
if(!xmlHttp&&typeofXMLHttpRequest!='undefined'){
xmlHttp=newXMLHttpRequest();
}
现在先不管那些注释掉的奇怪符号,如@cc_on,这是特殊的JavaScript编译器命令,将在下一期针对XMLHttpRequest的文章中详细讨论。这段代码的核心分为三步:
建立一个变量xmlHttp来引用即将创建的XMLHttpRequest对象。
尝试在Microsoft浏览器中创建该对象:
尝试使用Msxml2.XMLHTTP对象创建它。
如果失败,再尝试Microsoft.XMLHTTP对象。
如果仍然没有建立xmlHttp,则以非Microsoft的方式创建该对象。
最后,xmlHttp应该引用一个有效的XMLHttpRequest对象,无论运行什么样的浏览器。
关于安全性的一点说明
安全性如何呢?现在浏览器允许用户提高他们的安全等级,关闭JavaScript技术,禁用浏览器中的任何选项。在这种情况下,代码无论如何都不会工作。此时必须适当地处理问题,这需要单独的一篇文章来讨论,要放到以后了(这个系列够长了吧?不用担心,读完之前也许您就掌握了)。现在要编写一段健壮但不够完美的代码,对于掌握Ajax来说就很好了。以后我们还将讨论更多的细节
Ajax世界中的请求/响应
现在我们介绍了Ajax,对XMLHttpRequest对象以及如何创建它也有了基本的了解。如果阅读得很仔细,您可能已经知道与服务器上的Web应用程序打交道的是JavaScript技术,而不是直接提交给那个应用程序的HTML表单。
还缺少什么呢?到底如何使用XMLHttpRequest。因为这段代码非常重要,您编写的每个Ajax应用程序都要以某种形式使用它,先看看Ajax的基本请求/响应模型是什么样吧。