request.open('GET', 'http://localHost/xxxx.aspx, true);
request.send(null);
响应这个请求:request.onreadystatechange = function(){
var text = request.ResponseText; //取得响应的字符串
// 作出响应.....执行一些客户端JavaScript
};
当然实际代码比起这些代码要复杂得多,但前面说过了,我们并不讨论实现方式,而是探寻其执行原理,可见为Ajax剥下神秘面纱后赤裸裸的展示出来其简单的原理,和C#里的事件响应一样,只不过这个事件是客户端请求而服务端触发罢了,真正的复杂性早已被微软封装到ActiveX对象中了,但是原理的简单并不是说实现的简单,实现起来确实有些难度,但是现在那么多的AJAX框架已经为我们屏蔽了很底层的东东,实现并不在本文所谈论的话题,这里就不详述了。
任何新技术的引入伴随的都是痛苦的学习,我们必须掌握其实现原理,才能准确,适宜的用好这些新技术,盲目烂用只能弄巧成拙。那么作为开发人员的我们如何应对已经到来的AJAX呢?以下是我个人理解了AJAX后的一些结论(注:本人自知技术造诣浅陋,不对之处请大家原谅):
理解Ajax解决的问题
Ajax的出现就是为了改善Web程序用户体验,用户点击页面后的页面刷新延迟问题就是引入Ajax的直接理由,如果我们的程序运用AJAX并没有改善用户体验的话那只是为了Ajax而Ajax,而不是为了用户体验而Ajax。
Ajax的弊端
1、兼容性。Ajax的立命之本是前面提到的XMLHttpRequest,然而这个对象在各个浏览器中不尽相同,这就增加了我们开发过程中完成一个跨浏览器的通用代码的难度,而JavaScript这种语言在各种浏览器中对技术的支持和标准也不同,从而加剧了这种困难性。好在市面上纷繁的Ajax框架已经为我们解决了兼容性问题,让我们构建跨浏览器的程序变得简单起来。
2、服务器压力。本人认为Ajax把客户端请求服务器响应这一过程变为异步执行,一方面提高了用户体验,同时使得用户请求响应的次数显著增加,服务器面临的压力也将增强,试想一下,以传统整页加载的方式当用户请求一个页面时候必然会等待页面装载,而Ajax使得请求发出后页面并不需要等待,这样用户可以点击其他页面元素再次发送请求,试想一下Google的AutoComplete功能如果是链接数据库请求的话,每次输入都会发生这一行为,那数据库压力是否成倍增长?
3、语言问题。由于Ajax以JavaScript为核心,而这是一种繁杂而又易出错的语言,它会使得我们将应用逻辑任意地散布在服务端和客户端中,这使得问题很难被发现而且代码很难重用。JavaScript甚至被服务端开发人员认为是一种企业级应用不需要使用的东西应该尽力避免。幸好出现了Microsoft Script Debugger等强大的JS调试器,同时VS2008的JavaScript智能功能也在为这些问题而做着努力。然而JavaScript的缺陷如双重变量赋值(通常是由于缺少数据类型)使得调试程序依然面临挑战。
相关技术
由于XMLHttpRequest返回的响应是以字符串形式出现,因此XML成为理想的选择,Ajax中的x预示着XML将终身伴随着Ajax,因为大多数开发人员已经掌握了这项流行的技术。对于Xml来说理解Dom是必须的,Xpath为Xml操作提供了捷径,而XSLT为输出Html提供了天然的温床,因此所谈到的这些技术作为Ajax开发者必须掌握。加上新引入的XMLHttpRequest对象,和更复杂的JavaScript代码,相信技术的学习依然会痛苦一段时间。
新闻热点
疑难解答
图片精选