您现在的位置: IT专家网 > Web服务子站 > WebService开发
使用Google Ajax Search API
发出异步请求并不意味着只是与您自己的服务器端程序交互。其实也可以与一些公共API,例如来自Google或Amazon的API进行通信,从而为Web应用程序增加您自己的脚本和服务器端程序所不能提供的更多功能。在本文中,Brett McLaughlin教您如何向公共API,例如Google提供的API发出请求并接收其响应。
其中大部分搜索类型都可以查阅到,以下是一个简短的总结:
·GwebSearch:该对象用于搜索Web,这是Google最著名的一种搜索。
·GvideoSearch:该对象查找与搜索词相关的视频。
·GblogSearch:该对象专门搜索博客,博客的结构和标记与其它Web内容类型有所不同。
您已经了解如何预先装载特定的搜索。然后,剩下的只有draw()方法调用了,如清单6所示。您为该方法调用提供了HTML中的一个DOM元素(如果想回顾关于DOM的内容,请参阅参考资料中本系列的前几篇文章)。然后,这个控件将魔术般地出现在窗体上,供用户使用。
清单6. 绘制搜索控件
| function OnLoad() {
// create the Google search control var searchControl = new GSearchControl(); // These allow you to customize what appears in the search results var localSearch = new GlocalSearch(); searchControl.addSearcher(localSearch); searchControl.addSearcher(new GwebSearch()); searchControl.addSearcher(new GvideoSearch()); searchControl.addSearcher(new GblogSearch()); // Tell Google your location to base searches around localSearch.setCenterPoint("Dallas, TX"); // "Draw" the control on the HTML form searchControl.draw(document.getElementById("searchcontrol")); searchControl.execute("christmas Eve"); } |
到目前为止,还不能明显看出这个简单的搜索框中哪里存在异步性。当然,在Web应用程序中某个地方提供一个Google搜索框确实很棒,但是这毕竟是关于Ajax应用程序的系列文章,而不是关于Google搜索的系列文章。那么,Ajax到底在哪里呢?
输入搜索词并单击Search按钮,您将注意到一个非常有Ajax风格的响应:搜索结果直接显示出来,并没有页面重新装载过程。这正是大多数Ajax应用程序的标志之一,即无需重新装载页面,直接显示内容更改。显然,这已经超出了常规请求/响应模型的能力范围。但是,XMLHttpRequest在哪里呢?曾经在那么多文章中风光一时的request对象如今何在?除了那个getElementById()方法,DOM和页面操作又在哪里?实际上,这一切都包含在HTML内的两行代码中。
Google负责处理JavaScript
第一行要注意的代码尚未多加讨论,该代码如清单7所示。
清单7. 至关重要的JavaScript文件
| < script
src="http://www.google.com/uds/api?file=uds.js &v=1.0&key= [YOUR GOOGLE KEY]" type="text/javascript"> |
GSearchControl对象
另一项比较隐蔽的操作就是在onLoad()JavaScript函数中创建的GSearchControl对象。要创建这个对象,只需调用清单8中的代码。
清单8. 创建一个GSearchControl对象
| // create the Google search control
var searchControl = new GSearchControl(); |
清单9. 用于创建搜索控件的HTML代码
| < div id="searchcontrol" /> |
Ajax不仅仅是您自己编写的代码
Ajax应用程序不仅仅是指使用XmlHttpRequest;可以说是一种基于异步方式开发Web应用程序的方法。即使您没有编写任何特定于Ajax的代码,也仍然创建了一个Ajax应用程序。多亏了Google:它做了大部分工作,而您则坐享其成!
深度探索Google的Ajax Search API
至此,就该由您来完成这些步骤,并应用于您自己的应用程序。最简单的应用是,将一个div拖入Web页面,并将清单1中显示的JavaScript添加到Web页面中;然后就可以使用Google搜索了。
但是,有趣的事情不止于此。不必局限于这组特定的选项或控件。可以围绕Web结果、博客结果和视频结果做文章,合适的话,可以将每种结果集成到 Web应用程序中。例如,可以提供多个搜索控件,每个搜索控件专门用于搜索一种类型的结果。还可以将Google搜索控件包括在一个span元素中,放在其余的应用程序内容的中间,而不是放在侧面的一个div中。不管那种情况,都应该确信,Google的搜索是为您的需求而打造的,而不应该修改您自己的应用程序来适应Google。
结束语
以本文学到的知识为基础,将Google搜索框和其他Google API应用到您自己的Ajax应用程序中,这应该不难。然而,更重要的是,您应该明白如何使用公共API。例如,Amazon.com 也提供了一个公共API,通过它可以对书籍和Amazon的其它商品执行同样的Web搜索。您可以着手寻找自己喜欢的公共API,从而超越自己编程技能的限制。实际上,很容易创建一个集成了Google、Amazon.com、Flickr等内容的站点。
虽然弄清楚如何使用Google比较重要(因为Google提供了良好搜索算法和海量的数据存储),但更 重要的是学习如何使用任意的公共API。还应该开始转变观念,不要再将自己的应用程序看作自我编程技能的总和;相反,它可以是通向各种数据的一个大门。而这些数据可能存储在Google、Amazon.com、del.icio.us的服务器上或者其他任何地方。在这些数据的基础上,添加您自己的业务或项目内容,就可以得到非常强大、非常健壮的解决方案,这远远超过您自己编写的作品。
所以,把眼光放远一点,构建大 应用程序。使用来自各种地方的数据,不要限于自己编写的代码。享受使用他人代码的乐趣,在本系列接下来的文章中,我将谈到更多技术问题,例如数据格式。
- 本文关键词:

