什么是ajax
其实ajax已经属于老技术了,现在几乎没人不会用了,在这里主要是把底层的东西给大家分享一下,以备应对装逼的面试官。
ajax即“asynchronous javascript and xml”(异步javascript和xml),是指一种创建交互式网页应用的网页开发技术。
通过在后台与服务器进行少量数据交换,ajax 可以使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。
ajax的由来
该技术在1998年前后得到了应用。
允许客户端脚本发送http请求(xmlhttp)的第一个组件由outlook web access小组写成。该组件原属于微软exchange server,并且迅速地成为了internet explorer 4.0[3]的一部分。部分观察家认为,outlook web access是第一个应用了ajax技术的成功的商业应用程序,并成为包括oddpost的网络邮件产品在内的许多产品的领头羊。
但是,真正使得ajax被大众所熟知却是google。
google在它著名的交互应用程序中使用了异步通讯,如google讨论组、google地图、google搜索建议、gmail等。ajax这个词由《ajax: a new approach to web applications》一文所创,该文的迅速流传提高了人们使用该项技术的意识。另外,对mozilla/gecko的支持使得该技术走向成熟,变得更为易用。
ajax的原理
ajax的工作原理相当于在用户和服务器之间加了—个中间层(ajax引擎),使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给ajax引擎自己来做,只有确定需要从服务器读取新数据时再由ajax引擎代为向服务器提交请求。
ajax其核心有javascript、xmlhttprequest、dom对象组成,通过xmlhttprequest对象来向服务器发异步请求,从服务器获得数据,然后用javascript来操作dom而更新页面。这其中最关键的一步就是从服务器获得请求数据。
让我们来了解这几个对象:
1) xmlhttprequest对象
ajax的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新更新页面),这一特点主要得益于xmlhttp组件xmlhttprequest对象。
xmlhttprequest 对象方法描述:
2) javascript
前端最吊炸天的语言。
3) dom document object model
dom是给html和xml文件使用的一组api。它提供了文件的结构表述,让你可以改变其中的內容及可见物。其本质是建立网页与script或程序语言沟通的桥梁。所有web开发人员可操作及建立文件的属性、方法及事件都以对象来展现(例如,document就代表“文件本身“这个对像,table对象则代表html的表格对象等等)。 (想看更多就到ajax开发手册栏目中学习)
这些对象可以由当今大多数的浏览器以script来取用。一个用html或xhtml构建的网页也可以看作是一组结构化的数据,这些数据被封在dom(document object model)中,dom提供了网页中各个对象的读写的支持。
4) xml
可扩展的标记语言(extensible markup language)具有一种开放的、可扩展的、可自描述的语言结构,它已经成为网上数据和文档传输的标准,用于其他应用程序交换数据 。
5) 综合
ajax引擎,实际上是一个比较复杂的javascript应用程序,用来处理用户请求,读写服务器和更改dom内容。
javascript的ajax引擎读取信息,并且互动地重写dom,这使网页能无缝化重构,也就是在页面已经下载完毕后改变页面内容,这是我们一直在通过javascript和dom在广泛使用的方法,但要使网页真正动态起来,不仅要内部的互动,还需要从外部获取数据,在以前,我们是让用户来输入数据并通过dom来改变网页内容的,但现在,xmlhttprequest,可以让我们在不重载页面的情况下读写服务器上的数据,使用户的输入达到最少。
ajax使web中的界面与应用分离(也可以说是数据与呈现分离),而在以前两者是没有清晰的界限的,数据与呈现分离的分离,有利于分工合作、减少非技术人员对页面的修改造成的web应用程序错误、提高效率、也更加适用于现在的发布系统。也可以把以前的一些服务器负担的工作转嫁到客户端,利于客户端闲置的处理能力来处理。
ajax的优势
传统的web应用交互是由用户触发一个http请求到服务器,服务器对其进行处理后,再返回一个新的html页到客户端。
每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的html页,而用户每次都要浪费时间和带宽去重新读取整个页面。
这个做法浪费了许多带宽,由于每次应用的交互都需要向服务器发送请求,应用的响应时间就依赖于服务器的响应时间。这导致了用户界面的响应比本地应用慢得多。
与此不同,ajax应用可以仅向服务器发送并取回必需的数据,它使用soap或其它一些基于xml的web service接口,并在客户端采用javascript处理来自服务器的响应。
因为在服务器和浏览器之间交换的数据大量减少,结果我们就能看到响应更快的应用。同时很多的处理工作可以在发出请求的客户端机器上完成,所以web服务器的处理时间也减少了。
其实就一句话,老子不用刷整个页面就能看到变化了,改变的更迅速了,客户端分担了服务器的工作,服务器压力更小了。
ajax的劣势
数据、接口暴漏,安全性不太好。
本篇文章到这就结束了(想看更多就到ajax使用手册栏目中学习),有问题的可以在下方留言提问。
以上就是ajax怎么出现的?用ajax的优势和劣势都有哪些?的详细内容。
