快速业务通道

精通Grails: 用JSON和Ajax实现异步Grails - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15

精通Grails: 用JSON和Ajax实现异步Grails

时间:2011-08-02 IBM Scott Davis

本文讨论 Grails 对于其互补技术 JSON 和 Ajax 的支持。在前几期的 精通 Grails 系列文章中, JSON 和 Ajax 都扮演支援者的角色,而这一次,它们担任主角。您将使用内置的 Prototype 库和 Grails <formRemote> 标记发出一个 Ajax 请求。您还将看到一些关于提供本地 JSON 和通过 Web 动态获得 JSON 的例子。

为了进行演示,您将组建一个旅行计划页面,在该页面中,用户可以输入出发地机场和目的地机场。 当机场显示在一个 Google Map 上时,用户可通过一个链接搜索目的地机场附近的宾馆。图 1 显示了这 个页面:

图 1. 旅行计划页面

您可以在 1 个 GSP 文件和 3 个控制器中,用大约 150 行代码实现所有这些功能。

Ajax 和 JSON 简史

在 20 世纪 90 年代中期 Web 首次流行起来的时候,浏览器只允许粗粒度的 HTTP 请求。单击一个超级 链接或一个表单提交按钮,就会导致整个页面被清除,并且被新的结果替代。这对于以页面为中心的导航 来说本无大碍,但是页面上单个的组件却无法独立地更新。

1999 年,Microsoft® 在 Internet Explorer 5.0 中引入了 XMLHTTP 对象。这个新 对象使开发人员可以发出 “微” HTTP 请求,保持周围的 HTML 页面不受影响。虽然这个特性不是基于 World Wide Web Consortium(W3C)标准,但 Mozilla 小组已经意识到它的潜力,并在 2002 年的 Mozilla 1.0 发行版中增加了一个 XMLHttpRequest(XHR)对象。从那以后,它就成了一 个事实上的标准,每个主流 Web 浏览器都提供这样的对象。

2005 年,Google Maps 终于发布。对异步 HTTP 请求的广泛使用使得它与当时的其他 Web 映射站点 形成鲜明的对比。在浏览 Google Map 时,不再是单击一下,然后等待整个页面重新装载,而是可以用鼠 标顺畅地滚动地图。Jesse James Garrett 在一个 blog 帖子中使用简单易记的 Ajax 描述在 Google Maps 中使用的各种技术,从那以后这个名称就一直沿用下来(参见 参考资料 )。参考资料)。(在本文的后面您将使用 Yahoo! 的 JSON Web 服务) 。

近年来,Ajax 已成为用于 “Web 2.0” 应用程序的一个涵盖性术语,而不是一组特定的技术。请求 通常是异步的,并且以 JavaScript 发出,但是响应并非总是 XML。在基于浏览器的应用程序的开发中, XML 缺乏本地的、易于使用的 JavaScript 解析器。当然,也可以使用 JavaScript DOM API 解析 XML, 但是对初学者而言这并不容易。因此,Ajax Web 服务常常返回纯文本、HTML 片段或 JSON 格式的结果。

2006 年 7 月,Douglas Crockford 将描述 JSON 的 RFC 4627 提交到 Internet Engineering Task Force(IETF)。当年年末,Yahoo! 和 Google 等主要服务提供商将 JSON 输出作为 XML 的替代品(请 参阅

精通Grails: 用JSON和Ajax实现异步Grails(2)

时间:2011-08-02 IBM Scott Davis

JSON 的优点

在 Web 开发方面,JSON 与 XML 相比主要有两个优点。首先,它更加简洁。JSON 对象是一系列以逗 号分隔的 name:value 对,最外面有一对花括号。相反,XML 则使用重复的开始和结束标记包装数据值。 因此,与相应的 JSON 相比,这样便产生了两倍的元数据开销,所以 Crockford 将 JSON 趣称为 “XML 的无脂替代品”(请参阅 参考资料)。当处理 Web 开发的 “细管道” 时,每次减少一些字节都可以带 来实在的性能好处。

清单 1 显示了 JSON 和 XML 如何组织相同的信息:

清单 1. 比较 JSON 和 XML

{"city":"Denver", "state":"CO", 

"country":"US"}<result>  

<

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号