1、ajax的简介
php
JAX即“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),指的是一套综合了多项技术的浏览器端网页开发技术。Ajax的概念由Jesse James Garrett所提出[1]。ajax
传统的Web应用容许用户端填写表单(form),当提交表单时就向Web服务器发送一个请求。服务器接收并处理传来的表单,而后送回一个新的网页,但这个作法浪费了许多带宽,由于在先后两个页面中的大部分HTML码每每是相同的。因为每次应用的沟通都须要向服务器发送请求,应用的回应时间依赖于服务器的回应时间。这致使了用户界面的回应比本机应用慢得多。编程
与此不一样,AJAX应用能够仅向服务器发送并取回必须的数据,它使用SOAP或其它一些基于XML的页面服务接口(接口),并在客户端采用JavaScript处理来自服务器的回应。由于在服务器和浏览器之间交换的数据大量减小(大约只有原来的5%)。结果,咱们感受服务器回应更快了。同时,不少的处理工做能够在发出请求的客户端机器上完成,所以Web服务器的负荷也减小了。浏览器
相似于DHTML或LAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。事实上,一些基于AJAX的“派生/合成”式(derivative/composite)的技术正在出现,如AFLAX。服务器
2、ajax的应用网络
运用JavaScript操做DOM(Document Object Model)来运行动态效果;测试
运用XMLHttpRequest为Agent与网页服务器进行异步数据交换;插件
运用JavaScript技术来实现。
注意:AJAX与Flash、Silverlight和Java Applet等RIA技术是有区分的。
3、ajax的优缺点
使用Ajax的最大优势,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动做,并避免了在网络上发送那些没有改变的信息。
Ajax不须要任何浏览器插件,但须要用户容许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不一样的浏览器和平台上通过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。一样,也出现了另外一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。
对应用Ajax最主要的批评就是,它可能破坏浏览器的后退功能[3]。在动态更新页面的状况下,用户没法回到前一个页面状态,这是由于浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的差异很是微妙;用户一般都但愿单击后退按钮,就可以取消他们的前一次操做,可是在Ajax应用程序中,却没法这样作。不过开发者已想出了种种办法来解决这个问题,当中大多数都是在用户单击后退按钮访问历史记录时,经过建立或使用一个隐藏的IFRAME来重现页面上的变动。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,而后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态。)
一个相关的观点认为,使用动态页面更新使得用户难于将某个特定的状态保存到收藏夹中。该问题的解决方案也已出现,大部分都使用URL片段标识符(一般被称为锚点,即URL中#后面的部分)来保持追踪,容许用户回到指定的某个应用程序状态。(许多浏览器容许JavaScript动态更新锚点,这使得Ajax应用程序可以在更新显示内容的同时更新锚点。)这些解决方案也同时解决了许多关于不支持后退按钮的争论。
进行Ajax开发时,网络延迟——即用户发出请求到服务器发出响应之间的间隔——须要慎重考虑。若是不给予用户明确的回应[4],没有恰当的预读数据[5],或者对XMLHttpRequest的不恰当处理[6],都会使用户感到厌烦[7]。一般的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操做而且正在读取数据和内容。
4、ajax的兼容性
JavaScript编程的最大问题来自不一样的浏览器对各类技术和标准的支持。
XmlHttpRequest对象在不一样浏览器中不一样的建立方法,如下是跨浏览器的通用方法:
var xmlhttp=null;
function getxmlhttp() {
if(window.ActiveXObject){
xmlhttp=new ActiveXObject;
}else if(window.XmlHttpRequest){
xmlhttp=new XmlHttpRequest;
}
}
getxmlhttp();
这样就能够解决兼容性问题了,惋惜的是仍是Opara仍是不能兼容Ajax。可是支持大多数浏览器;
未完待续……