ajax过程与google自动补全研究

来源 :硅谷时代 | 被引量 : 0次 | 上传用户:bear81
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  [摘 要] Ajax是Web2.0的核心之一,它采用异步模式,可以开发出基于浏览器的具有高用户交互性的web应用,改变了传统Web应用的交互模式,从而可以构建出更为动态、响应更灵敏和用户体验更好的Web应用程序。
  [关键词] Ajax JavaScript DHtml Web2.0
  
  一、Ajax技术简介
  
  AJAX,"Asynchronous JavaScript And XML"的缩写,可翻译为异步JavaScript及XML技术。其核心是一个寄宿在浏览器中名为XMLHTTPRequest的类。通过此类,可以做到无需提交表单就可以实现与服务器的连接;无需刷新整个页面,就可以动态更新页面中一部分的内容。XMLHTTPRequest通常使用XML作为数据交换的载体,但也可使用其他的载体,如纯文本。简单来说,就是通过XMLHTTPRequest发送信息给服务器,异步接收服务器处理并返回信息,然后通过JavaScript动态更新页面的部分内容。
  
  二、Ajax原理及其技术构成
  
  Ajax这个概念的最早提出者Jesse James Garrett认为,Ajax并不是一门新的语言或技术,它实际上是几项技术按一定的方式组合在一在同共的协作中发挥各自的作用,它包括:
  使用XHTML和CSS标准化呈现;
  使用DOM实现动态显示和交互;
  使用XML和XSLT进行数据交换与处理;
  使用XMLHttpRequest进行异步数据读取;
  最后用JavaScript绑定和处理所有数据;
  Ajax的工作原理相当于在用户和服务器之间加了—个中间层,使用户操作与服务器响应异步化。并不是所有的用户请求都提交给服务器,像—些数据验证和数据处理等都交给Ajax引擎自己来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求.
  虽然Garrent列出了7条Ajax的构成技术,但我们常用到的ajax核心只有JavaScript、XMLHTTPRequest和DOM,如果所用数据格式为XML的话,还可以再加上XML这一项(Ajax从服务器端返回的数据可以是XML格式,也可以是文本等其他格式)。在旧的交互方式中,由用户触发一个HTTP请求到服务器,服务器对其进行处理后再返回一个新的HTHL页到客户端,每当服务器处理客户端提交的请求时,客户都只能空闲等待,并且哪怕只是一次很小的交互、只需从服务器端得到很简单的一个数据,都要返回一个完整的HTML页,而用户每次都要浪费时间和带宽去重新读取整个页面。
  而使用Ajax后用户从感觉上几乎所有的操作都会很快响应没有页面重载(白屏)的等待。
  下面简单介绍一个这几种技术
  1.JavaScript
  JavaScript是一在浏览器中大量使用的编程语言,一种由Netscape的LiveScript发展而来的脚本语言,它提高与Java的兼容性。JavaScript采用HTML页作为其接口。使得网页和用户之间实现了一种实时性的、动态的、交互性的关系,使网页包含更多活跃的元素和更加精彩的内容。Javascript短小精悍,又是在客户机上执行的,大大提高了网页的浏览速度和交互能力。同时它又是专门为制作Web网页而量身定做的一种简单的编程语言。
  2.XMLHTTPRequest
  Ajax的一个最大的特点是无需刷新页面便可向服务器传输或读写数据(又称无刷新更新页面),这一特点主要得益于XMLHTTP组件XMLHTTPRequest对象。这样就可以向再发桌面应用程序只同服务器进行数据层面的交换,而不用每次都刷新界面也不用每次将数据处理的工作提交给服务器来做,这样即减轻了服务器的负担又加快了响应速度、缩短了用户等候时间。
  3.DOM
  文档对象模型(Document Object Model),是用于HTML和XML文档的API。DOM提供了文档的结构化表现,允许你修改文档的内容和视觉表现。本质上,它把网页和脚本或编程语言连接了起来。
  DOM用来表示浏览器上的整个文档对象及其层次结构(例如,document 就代表“文件本身“这个对像,table对象则代表HTML的表格对象等等)。DOM中的所有节点可以使用JavaScript脚本使用。DOM模型使得页面层次结构能够动态的变化。
  4.可扩展的标记语言(Extensible Markup Language)具有一种开放的、可扩展的、可自描述的语言结构,它已经成为网上数据和文档传输的标准。它是用来描述数据结构的一种语言,就正如他的名字一样。他使对某些结构化数据的定义更加容易,并且可以通过他和其他应用程序交换数据。
  
  三、通常的ajax过程
  
  通常的页面AJAX的过程如下:
  1.初始化页面
  2.对页面操作,触发元素的事件处理函数
  3.元素的事件处理函数调用AJAX事件处理函数,同时传给AJAX事件处理函数必要的发给服务器端的参数数据
  4.AJAX事件处理函数创建XMLHttpRequest对象,发送http请求,接收请求,必要时将控制权交由回调函数
  5.请求处理函数:判断http请求
  6.业务处理函数,更新到视图
  在这个过程中,可以看出其核心是事件处理函数,其典型过程如下:
  1.初始化XMLHttpRequest对象
  2.指定回调函数,即设定XMLHttpRequest对象的onreadystatechange属性
  3.创建http请求,即调用XMLHttpRequest对象的open()方法
  4.设置http请求头,即调用XMLHttpRequest对象的setResourceHeader方法
  5.发送http请求,即调用XMLHttpRequest对象的send()方法
  当open()的asynchoronize参数设定为true(也就是默认值)时,当readystate的值发生改变时,就会将控制转交给回调函数处理。
  回调函数可以分为请求处理函数和业务处理函数。前者判断http请求头,并做必要的异常处理;后者分析并加工相应的数据,根据既定业务需求更新页面内容。
  但是我们在实际的应用中,根据实际情况,实现ajax并不一定需要通过XMLHttpRequest发送请求来进行页面的局部刷新,根据实际情况,采用其他的方法,灵活使用Ajax的其他组成技术,同样也能实现页面的局部刷新,也使代码更加的灵活。下面就是一个仅使用dom,javascript结合服务器端的servlet实现模仿google自动补全ajax效果的例子。
  
  四、通过Ajax实现仿google的自动补全
  
  Google的自动补全过程,是在页面上产生一个div区域,当文本框无任何输入时,这个div区域是隐藏的,输入字符后,触发javascript事件,从服务器端获得搜索关键词的数据,展开div区域进行自动补全。在这里例子中,由javascript代替XMLHttpRequest向服务器端发送请求,用一个页面产生的xml数据代替了google服务器端返回的关键词数据,实现了类似google自动补全的效果。
  1)服务器端代码
  服务器端是一个servlet,在servlet的doGet()方法里定义了一个request对象,并将视图层中得到的数据保存到request对象中。里面的doPost()方法直接调用doGet()方法。
  通过servlet返回的视图层代码,这段代码是写在一个jsp页面上,模拟了Google从服务器端搜索关键词的结果。因为JSP返回的是xml数据,所以contentType是text/xml。
  2)JSP页面代码
  在页面代码中,没有包含javascript语句,javascript语句单独写在了一个js文件当中,在输入框上直接链接到了js文件。当执行时,在输入框中输入部分内容,出现一个div部分,显示服务器端返回的数据,实现自动补全。Div部分在js文件中定义。
  在写ajax的代码时要认识到的是,ajax的页面部分刷新,在实际的执行中,并不是通过html代码或者服务器端代码实现,而是由javascript来实现的。因此要使用ajax,必须对javascript有足够的了解。
  3)Javascript代码
  接下来的,是不使用XMLHttpRequest来实现ajax最关键的部分,由javascript语句来访问服务器端,并获得服务器端返回的数据。在这个例子中,javascript语句定义了页面自动补全何时出现,各种事件效果。同时通过javascript语句直接调用了servlet。在下面的代码中,注释部分对javascript语句有比较详细的解释,可以看到,javascript语句是如何实现页面效果的变化,如何被页面事件调用还有如何代替XMLHttpRequest向服务器端发出请求的。
  
  结束语
  
  由上可见,AJAX并不复杂,远比想像中要简单得多。在能够更加自由的写出ajax后,就会发现,我们运用ajax的中心,不是XMLHttpRequest,而是javascript,灵活的,更加有想象力的运用javascript,能使我们的代码更加自由,使我们能做出更加生动的web效果。
  
  参 考 文 献
  [1] [美]麦克劳夫林.Head Rush Ajax-深入浅出Ajax 东南大学出版社,2006.5.
  [2] 李刚.基于J2EE的Ajax宝典.电子工业出版社.2007.5■
其他文献
[摘 要] 水利工程造价控制是一个动态的、全过程的、周期长的管理,每个阶段都会有不同的外界相关因素影响,做好造价的管理也就是对造价的有效控制,在抓住管理重点和关键点同时,对每笔发生额控制在一定的限额以内,随时纠正发生的偏差,做到发生额与限额一致,保证项目投资目标的实现,有效的造价管理对整个工程来说是谋取了最佳的经济效益和社会效益,实现水利工程的最本质目标。  [关键词] 水利工程 造价管理    
期刊
[摘 要] 会计档案是企事业单位和机关团体在经济管理和各项会计核算活动中直接形成的作为历史记录保存下来的会计凭证、会计账簿和会计报表,以及其它会计资料等专业材料。它以丰富的原始数据和恒定不变的价值量为使用者提供可靠的信息。如何做好会计档案的收集、整理、销毁、调阅与利用,使会计档案管理实现制度化、规范化、科学化,成为制约各单位经济管理工作的关键问题。  [关键词] 会计档案 科学管理 信息化 电子财
期刊
[摘 要] 在争夺客户的战争中,价格战是企业管理者手中最常挥动的武器。以低价吸引客户固然无可厚非,但相互报复性的降价只会给整个行业带来利润的急剧下降。价格战中很少有人能成为真正意义上的赢家,即使企业能够幸存下来也往往会被打得遍体鳞伤。本文在分析价格战起因的基础上,试图给出价格战的规避策略和减损策略。  [关键词] 价格战 价格战起因 价格战规避 价格战减损    价格战是指竞争企业之间持续地试图降
期刊
MVC设计模式成为了目前十分流行的一种设计方法.它是一种软件的设计方法模式.并且被大量的开发和实践所证明.因此本文通过介绍Struts框架这种已经实现了MVC模式的软件构件框架了讨论该模式的优势和如何投入到软件开发中去.Struts是目前Web开发中比较成熟的一种框架,本文阐述了基于MVC模型的Web应用软件开发框架struts的体系结构及主要组成组件,并结合一个实例讨论如何设计基于struts框
期刊
[摘 要] 始于2007年3月份的美国次贷危机波及全球金融市场,从全球资本市场的波动及美国实体经济的变化来看,次贷危机在美国乃至全球范围内的影响都不容小视。中国经济是否能“独善其身”?次贷危机将对中国经济产生什么影响?面对次贷危机,中国经济将如何应对这种挑战?  [关键词] 次贷危机 中国经济    一、美国次贷危机产生的背景和原因    (一)美国次贷危机产生的背景  次贷危机又称次级房贷危机,
期刊
伴随着新一轮基础教育课程改革的实施,新课程已走进我们教师的生活。面对全新的课程标准,全新的教材,对我们来说,都是一次新的挑战。教育质量是教育事业的生命,而提高教育质量不能寄托在“加班加点”补课上,主渠道仍是提高课堂教学效率。如何更加科学地利用课堂时间,如何提高课堂效率,是一个深刻的问题,也是一个老生常谈的问题,可谓仁者见仁,智者见智,每一个授课老师都有自己的见解,我在自己的教学过程中,也积累了一些
期刊
[摘 要] 近年来,随着高速公路、一二级公路的蓬勃发展,以及现代人们对建筑赏美品质的提高,桥梁混凝土的外观质量越来越重要。但是,桥梁混凝土外观质量的问题一直是个顽敌,难以彻底根除。只有分析透彻其内在影响因素,才能从根本上根治问题的出现和产生。  [关键词] 桥梁 混凝土 外观质量 影响因素    1、引言    桥梁混凝土外观质量的问题仍然是个顽敌,难以彻底根除。只有分析透彻其内在影响因素,才能从
期刊
工程量清单计价是国际上比较通行的惯例,是比较科学和先进的一种计价模式,是使市场形成建筑产品价格的一种有效途径,随着我国建筑市场与国际市场的进一步接轨及加入WTO后对我国建筑市场提出的新的要求,国家颁布并实施了《建设工程工程量清单计价规范》,标志着是我国工程造价管理从传统的“量价合一”的预算模式向“量价分离”的市场计价模式的转变。工程量清单计价要求施工企业根据自身的条件编制出自己的企业定额,改变过去
期刊
[摘 要] 当今社会有一怪现象,艺盲、美盲也大量存在于接受过高等教育的人之中,本文由此现象出发,通过分析当今高校热闹的艺术教育活动与备受质疑的教育结果之间的反差,旨在探讨高校艺术教育究竟该如何展开才能收到合理良好的效果,从而论述我国的高校艺术教育之重要性。  [关键词] 艺术 教育 目的    在当代社会,在这个大学教育几乎都已成为普及教育的时代,要在身边找出一个文盲已不那么容易,然而即便是在教育
期刊
[摘 要] SDH网络管理系统对于SDH光端设备及其传送网络的正常运行具有非常重要的作用。文章对SDH网络管理系统的层次结构、网管功能、建设思路进行了研究,并对建设中的几个要点做了简单分析。  [关键词] SDH 网络管理 系统结构    一、引言    信息科学与信息技术的迅速发展,不仅全面推动着政治、经济、科技、文化等方面的持续快速发展,也给军队建设、发展带来重大变革。同步数字系列SDH作为一
期刊