ajax
AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。
AJAX 不是新的编程语言,而是一种使用现有标准的新方法。
AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。
ajax的使用原理
Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。这样把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理,减轻服务器和带宽的负担,从而达到节约ISP的空间及带宽租用成本的目的。
使用 Ajax 原生方式发送请求主要通过 XMLHttpRequest(IE7+、Firefox、Chrome、Safari 以及Opera) 、ActiveXObject(IE5 和 IE6)对象实现异步通信效果。
创建XMLHttpRequest对象:
向服务器发送请求:使用 XMLHttpRequest 对象的 open() 和 send() 方法
使用GET还是POST?
与 POST 相比,GET 更简单也更快,并且在大部分情况下都能用。
然而,在以下情况中,请使用 POST 请求:
无法使用缓存文件(更新服务器上的文件或数据库)
向服务器发送大量数据(POST 没有数据量限制)
发送包含未知字符的用户输入时,POST 比 GET 更稳定也更可靠
onreadystatechange事件:当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当 readyState 改变时,就会触发 onreadystatechange 事件。
ajax的核心
Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。
ajax的优缺点
优点:
无刷新更新数据:在不刷新整个页面的情况下维持与服务器通信
异步与服务器通信:使用异步的方式与服务器通信,不打断用户的操作
前端与后端负载均衡:将一些后端的工作移到前端,减少服务器与带宽的负担
基于规范被广泛支持:不需要下载浏览器插件或者小程序,但需要客户允许JavaScript在浏览器上执行。
界面与应用分离:Ajax使得界面与应用分离,也就是数据与呈现分离
缺点:
Ajax不支持Back与History功能,即对浏览器机制的破坏:在动态更新页面的情况下,用户无法回到前一页的页面状态,因为浏览器仅能记忆历史纪录中的静态页面
安全问题:AJAX技术给用户带来很好的用户体验的同时也对IT企业带来了新的安全威胁,Ajax技术就如同对企业数据建立了一个直接通道。这使得开发者在不经意间会暴露比以前更多的数据和服务器逻辑。ajax的逻辑可以对客户端的安全扫描技术隐藏起来,允许黑客从远端服务器上建立新的攻击。还有ajax也难以避免一些已知的安全弱点,诸如跨站点脚步攻击、SQL注入攻击和基于credentials的安全漏洞等。
对搜索引擎支持较弱:如果使用不当,AJAX会增大网络数据的流量,从而降低整个系统的性能。解决的办法:可以先用服务器渲染。
破坏程序的异常处理机制
违背URL与资源定位的初衷
不能很好地支持移动设备
客户端肥大,太多客户段代码造成开发上的成本
应用场景
动态加载数据,按需取得数据。【树形菜单、联动菜单…/省市联动】
改善用户体验。【输入内容前提示、带进度条文件上传…】
电子商务应用。【购物车、邮件订阅…】访问第三方服务。【访问搜索服务、rss阅读器】
数据的布局刷新
不适用于搜索 ,基本的导航,替换大量的文本,部分简单的表单