【ajax的简介】
AJAX(异步JavaScript和XML的缩写)[1]是一组相互关联的用于创建异步的客户端Web应用程序的方法。有了Ajax,Web应用程序可以发送数据,并检索数据,服务器异步(在后台),而不会干扰现有的网页的显示和行为。通常使用XMLHttpRequest对象检索数据。尽管名字中含有xml,并不一定必须使用XML(JSON是经常被用来代替),请求的方式不一定必须为异步的。
Ajax不是一个技术,而是一组技术。HTML和CSS,可以结合用来标记和样式信息。DOM允许JavaScript访问动态显示,并允许用户交互信息。JavaScript和XMLHttpRequest对象提供了异步浏览器和服务器之间交换数据,以避免整页重新载入的方法。
【可以用的技术】
ajax代表许多web技术,他们可用于实现Web应用程序与后台的服务器进行通信并且同时不会干扰当前页面状态。
* HTML(或XHTML)和CSS
*文档对象模型(DOM)动态显示和数据交互
* XML的数据交换,其操纵和XSLT
* XMLHttpRequest对象异步通信
* JavaScript来把这些技术结合在一起
JavaScript是不是唯一的客户端脚本语言,使用其他语言如VBScript也能够所需的功能,可用于实现Ajax应用程序。JavaScript是最流行的语言,并与大多数现代Web浏览器的兼容性,成为最流行的开发ajax的语言。此外,数据交换并不一定必须需要XML,因此XSLT也不是数据操作所必需的。JavaScript Object Notation(JSON)是经常被用来作为数据交换,虽然也可用于其他如预先格式化的HTML或纯文本格式的替代格式。
【缺点】
【技术上增加开发的复杂度】
*兼容性问题不同【版本】浏览器,包括对XMLHttpRequest,javascript,dom,css等技术的支持。
*富客户端开发时第一,JavaScript语言本身之能力可能不足以处理复杂的业务逻辑。第二,JavaScript的执行性能一向不好。第三,JavaScript访问服务器数据,仍需适当的服务器端程序之配合。第四,浏览器兼容性的问题又出现。
*
*破坏浏览器的默认行为比如后退按钮,加标签按钮等
*瘦客户端(thin client)架构。浏览器的用户接口引擎仅用于反映服务器的表现层以及传达用户的输入回到服务器的表现层。由浏览器所触发之事件亦送回服务器处理,根据业务逻辑来更新表现层,然后反映回浏览器。因为所有应用程序完全在服务器执行,数据及表现层皆可直接访问,程序员只需使用服务器端相对较成熟之程序语言(如Java语言)即可,不需再学习JavaScript/DOM/CSS,在开发应用程序时相对容易。缺点在于用户接口引擎以及表现层通常以标准组件的形式存在,如需要特殊组件(用户接口)时,往往须待原框架之开发者提供,缓不济急。如开源码Ajax开发框架ZK目前支持XUL及XHTML组件,尚无XAML之支持。
*Ajax是以异步的方式向服务器提交需求。对服务器而言,其与传统的提交窗体需求并无不同,而且由于是以异步之方式提交,如果同时有多个Ajax需求及窗体提交需求,将无法保证哪一个需求先获得服务器的响应。这会造成应用程序典型的多进程(process)或多线程(thread)的竞争(racing)问题。程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生(如Ajax需求未响应之前,先disable提交按钮),这又不必要的增加了程序员的负担。目前已知有自动处理此问题之开发框架似乎只有ZK。
*由于ajax的的完成守客户的网络环境影响,网络太慢时可能导致请求回应时用户正在惊醒一个不方便打扰的操作,或者是某些依赖与请求结果的操作具有不确定性。
*ajax的跨域问题。
*用户禁用javascript则导致功能不可用的问题。
[富客户端]将业务逻辑及表现层放在浏览器,数据层放在服务器:因为所有的程序以JavaScript执行在客户端,只有需要数据时才向服务器要求服务,此法又称为胖客户端(fat client)架构。服务器在此架构下通常仅用于提供及储存数据。此法的好处在于程序员可以充分利用JavaScript搭配业务逻辑来做出特殊的用户接口,以符合终端用户的要求。
表现层、业务逻辑、及数据层放在服务器,浏览器仅有用户接口引擎(User Interface engine);此法又称为瘦客户端(thin client)架构,或中心服务器(server-centric)架构