Ajax核心概念的神秘面纱(3)
每个人都希望每天都是开心的,不要因为一些琐事扰乱了心情还,闲暇的时间怎么打发,关注图老师可以让你学习更多的好东西,下面为大家推荐Ajax核心概念的神秘面纱(3),赶紧看过来吧!
以DOM结束
最后还有DOM,即文档对象模型。可能对有些读者来说DOM有点儿令人生畏,HTML设计者很少使用它,即使JavaScript程序员也不大用到它,除非要完成某项高端编程任务。大量使用DOM的是复杂的Java和C/C++程序,这可能就是DOM被认为难以学习的原因。
幸运的是,在JavaScript技术中使用DOM很容易,也非常直观。现在,按照常规也许应该说明如何使用DOM,或者至少要给出一些示例代码,但这样做也可能误导您。即使不理会DOM,仍然能深入地探讨Ajax,这也是我准备采用的方法。以后的文章将再次讨论DOM,现在只要知道可能需要DOM就可以了。当需要在JavaScript代码和服务器之间传递XML和改变HTML表单的时候,我们再深入研究DOM。没有它也能做一些有趣的工作,因此现在就把DOM放到一边吧。
获取Request对象
有了上面的基础知识后,我们来看看一些具体的例子。XMLHttpRequest是Ajax应用程序的核心,而且对很多读者来说可能还比较陌生,我们就从这里开始吧。从清单1可以看出,创建和使用这个对象非常简单,不是吗?等一等。
还记得几年前的那些讨厌的浏览器战争吗?没有一样东西在不同的浏览器上得到同样的结果。不管您是否相信,这些战争仍然在继续,虽然规模较小。但令人奇怪的是,XMLHttpRequest成了这场战争的牺牲品之一。因此获得XMLHttpRequest对象可能需要采用不同的方法。下面我将详细地进行解释。
使用Microsoft浏览器
Microsoft浏览器InternetExplorer使用MSXML解析器处理XML(可以通过参考资料进一步了解MSXML)。因此如果编写的Ajax应用程序要和InternetExplorer打交道,那么必须用一种特殊的方式创建对象。
但并不是这么简单。根据InternetExplorer中安装的JavaScript技术版本不同,MSXML实际上有两种不同的版本,因此必须对这两种情况分别编写代码。请参阅清单3,其中的代码在Microsoft浏览器上创建了一个XMLHttpRequest。
清单3.在Microsoft浏览器上创建XMLHttpRequest对象
varxmlHttp=false;try{xmlHttp=newActiveXObject("Msxml2.XMLHTTP");}catch(e){try{xmlHttp=newActiveXObject("Microsoft.XMLHTTP");}catch(e2){xmlHttp=false;}}
您对这些代码可能还不完全理解,但没有关系。当本系列文章结束的时候,您将对JavaScript编程、错误处理、条件编译等有更深的了解。现在只要牢牢记住其中的两行代码:
xmlHttp=newActiveXObject("Msxml2.XMLHTTP");
和
xmlHttp=newActiveXObject("Microsoft.XMLHTTP");
这两行代码基本上就是尝试使用一个版本的MSXML创建对象,如果失败则使用另一个版本创建该对象。不错吧?如果都不成功,则将xmlHttp变量设为false,告诉您的代码出现了问题。如果出现这种情况,可能是因为安装了非Microsoft浏览器,需要使用不同的代码。
处理Mozilla和非Microsoft浏览器
如果选择的浏览器不是InternetExplorer,或者为非Microsoft浏览器编写代码,就需要使用不同的代码。事实上就是清单1所示的一行简单代码:
varxmlHttp=newXMLHttpRequestobject;
这行简单得多的代码在Mozilla、Firefox、Safari、Opera以及基本上所有以任何形式或方式支持Ajax的非Microsoft浏览器中,创建了XMLHttpRequest对象。