`

小胖的 Adobe AIR with Ajax 实例课堂(二)

阅读更多
小胖的 Adobe AIR with Ajax 实例课堂(二)

第二课 : 调用google翻译服务,实现英汉单词互译

======================
google翻译服务简介

上一课的前言部分实在太啰嗦了 ,这一课让我们加快点节奏,直入主题吧.

google的翻译服务 提供了基于HTTP服务的API(按google的说法是 提供了一个简单的 RESTful 界面 ).
只要向服务地址发送HTTP请求,并传递相应的数据, google就会把结果以JSON字符串的形式返回给客户端.

调用google的翻译服务的URL类似如下:           
  http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=test&langpair=en%7Czh-CN
 
  其中  q=test 意为要翻译的词是"test",
  langpair=en%7Czh-CN 其实就是 langpair=en|zh_CN , 意为"英到汉"的翻译.

                        
调用成功的返回信息类似如下:                           
  {"responseData":{"translatedText":"测试"}, "responseDetails":null, "responseStatus":200}                                   



调用失败的返回信息类似如下: 
  {"responseData":null, "responseDetails":"invalid text", "responseStatus":400}                                              

responseData.translatedText 为翻译结果
responseDetails 为提示信息(通常为错误提示信息) ,上例中提示信息的意思是 无效的输入值. 也就是说让google翻译了一个无法翻译的字符串,例如空格 回车符等.
responseStatus 为状态码, 200为调用成功.

想了解更多更深入的"google翻译服务"相关信息,请移步这里

在我将要开发的这个小工具中, 调用 google翻译的这个RESTful服务, 最好的方式自然就是Ajax了.
下面看看具体如何来做吧.

======================
利用Ajax调用google翻译服务

在开始之前, 先告诉大家一个很重要的知识点:
在Adobe AIR, XMLHttpRequest 是可以跨域访问URL的.
这个特性让人不得不泪流满面.

既然这样, 那么我想大家心里也有数了, 调用google的翻译服务实在是很简单的事情.

那么下面可以设计一个简单的页面,页面包含如下功能:
  • 提供一个可以输入欲翻译单词的输入框.
  • 一个触发翻译功能的按钮.
  • 一个用来选择是 英汉 还是 汉英 翻译的选择框.
  • 一个显示翻译结果(或错误提示)的区域


这几个功能很好实现,打开main.html,清空<body>里的内容,然后写入如下代码:
<div>
	<textarea id="queryWord" name="queryWord" rows="" cols="">test</textarea>
</div>
<div>
	<input type="radio" name="langpair" value="en|zh-CN" checked="checked">英-->汉
	<input type="radio" name="langpair" value="zh-CN|en">汉-->英
</div>
<div>
	<button type="button" id="doTranslate" >翻译</button>
</div>
<div> 结果 :</div>
<div id="result">&#160;</div>

同时在head里的style中加入下面的样式
* {
	font-size : 14px;
}

#result {
	border : 1px solid #cccccc;
	padding : 10px;
	margin : 10px;
}


运行后,效果就是这样了:

还是那么丑 呵呵.不过不管怎样,界面总算出来了, 美化的事情以后再说,先试着实现基本的功能吧.

页面画好了,剩下的就是利用JS来读取这些表单域的值,然后通过XHR请求把这些值传递给google翻译服务,
再然后等着把结果显示出来就ok了.

这些我们利用JQuery来实现. 在main.html页面的 head里的script区里写入如下代码:

// 页面初始化后 执行下面的代码
 $(document).ready(function(){
	
	//给"翻译"按钮注册点击事件
	$("#doTranslate").click(function(event){
		
		// 取"单词输入框"的内容,并trim,如果输入内容为空则不做翻译
		var q= $.trim( $('#queryWord').val()||$('#queryWord').text() );
		if (!q) {
			return;
		}

		//定义一些常量
		var ERR_MSG="( Cann't Translate! )";
		var TRANSLATE_API="http://ajax.googleapis.com/ajax/services/language/translate";
		var TRANSLATE_VER = "1.0";

		// 取翻译类型的值
		var langpair=$('input:radio[name=langpair]:checked').val();
		
		// 利用Ajax调用 google翻译服务, 将返回结果写入到 id="result"的DIV里.
		// AIR 里的 Ajax 支持跨域访问!!!! 所以我们可以直接调用google翻译服务.
		$.getJSON( TRANSLATE_API,

			// 调用服务时 传递的参数.
			{ 
				v : TRANSLATE_VER,
				q : q,
				langpair : langpair
			},
			// 调用服务后的回调函数.
		   function(data, textStatus){
				if (textStatus=="success") {
					var status=data.responseStatus,t;
					if (status==200) {
						t=data.responseData? data.responseData.translatedText:ERR_MSG;
					}else{
						t=data.responseDetails||ERR_MSG;
					}
				}
				//把翻译结果 或者是错误提示 显示在id="result"的DIV里
				$('#result').html(t)
		   }
		);

   });
 });



这些代码如果不懂得JQuery的同学看起来可能有点晕, 不过无所谓了, 主要了解一下思路, 其实大家可以使用自己熟悉的方式来实现这个功能,整个过程并不复杂.

好了 现在再用 run.bat 运行一下这个AIR应用吧.
并且试着进行一些简单的翻译 看看效果吧.

如果没有出来效果 或者报错, 那么下载 附件 lession_2.zip, 看看里面的实例是如何实现的.


======================
一个关于刷新页面的小技巧

在开发过程中, 每次改变 main.html 后,如果想看看效果, 似乎是蛮麻烦的事情.
因为要关闭正在运行的当前应用,然后重新运行. (AIR中 同一个应用是不能运行多个实例的)

要是能直接在已经运行的应用中,刷新页面就好了.

虽然前面说过 AIR就是一个特殊的浏览器, 我们开发的应用就是一个HTML页面,
但是AIR这个浏览器 没有提供刷新的快捷键和按钮, 所以在开发期, 给我们的页面提供一个 刷新按钮,用来实时的开到最新的开发成果是很有意义的事情.

在开发结束 或者稳定后, 再把这个刷新按钮去掉就OK了.

这个就不详述了, 看一看 附件 lession_2.zip 中的 main.html 文件大家就能有所体会.


======================

这一课结束了. 其实关于AIR的东西并不多,简单总结一下无非以下两点:
  • AIR中的XMLHttpRequest可以跨域访问
  • 开发期,给页面加一个"刷新页面"的功能 可以提高我们开发的效率.


到目前为止,这个小工具的第一个功能特性已经完成了"利用google翻译服务翻译单词,支持汉英 和 英汉"
虽然还不够好,但仍然是一个大进步.

那么 下一课就让我们进步的再大一点吧 嘎嘎!



第三课在这里: 小胖的 Adobe AIR with Ajax 实例课堂(三)








12
4
分享到:
评论
3 楼 fins 2009-12-29  
caoming_ke 写道


小胖的 Adobe AIR with Ajax 实例课堂(二)
里面很多乱码怎么办?



请问你是在哪里看到的乱码? 是运行时 还是自己用编辑器查看代码时?

如果是后者 请确认你的编辑器是以UTF-8编码查看文件.
2 楼 avanry 2009-12-26  
为什么不直接用FLEX BUILDER开发工具呢?
用工具就直接建工程了,你这是基于网页版的AIR吧....
还有个问题:AIR不是具有AJAX特性吗?还需要集成AJAX吗?(原谅我,I am a freshman)
1 楼 netfork 2009-12-26  
谢谢小胖,写的很清楚。

相关推荐

    小胖的 Adobe AIR with Ajax 实例课堂(一)

    在"小胖的 Adobe AIR with Ajax 实例课堂(一)"中,我们可以期待学习如何利用Adobe AIR结合Ajax技术来构建桌面应用程序。 Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载整个网页的情况下,能够更新...

    小胖的 Adobe AIR with Ajax 实例课堂(三)

    在"小胖的 Adobe AIR with Ajax 实例课堂(三)"这个教程中,我们将深入探讨如何利用这些技术构建功能丰富的桌面应用。 首先,让我们理解什么是Ajax。Ajax(Asynchronous JavaScript and XML)是一种在无需重新加载...

    ajax获取嵌套JSON,树形控件显示

    在IT领域,Ajax(异步JavaScript和XML)是一种在不刷新整个页面的情况下更新部分网页内容的技术,而jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理和AJAX交互。ZTree是一款基于jQuery的树形插件,...

    微信小程序bilibili项目实战小胖商城(源码).zip

    微信小程序bilibili项目实战小胖商城(源码).zip微信小程序bilibili项目实战小胖商城(源码).zip微信小程序bilibili项目实战小胖商城(源码).zip微信小程序bilibili项目实战小胖商城(源码).zip微信小程序...

    小胖参数使用说明

    小胖无限网络使用参数详细表 里面含精确的详细表说明

    小胖阅读器软件v1.1.0.113中文官方安装版

    小胖阅读器恰到好处的简单。简单,在于外观,更在于体验。所以你一定会喜欢全新的小胖阅读器,它会给你简洁畅快的使用感受,而不需要过多的思考压力。 功能介绍 恰到好处的简单 简单,在于外观,更在于体验。所以你...

    wpa破解之pin码破解教程 小胖

    xiaopan 教程 wifi破 wpa破解pin码破解教程

    小胖月android版

    内容概要:目前主要包含叫号功能,可以设置范围、选择数量、重复选择、自动选择、振动反馈、声音反馈等功能。比如用于班级抽查作业,公平有趣,学生可嗨了。 采用android多线程、异步刷新界面技术,集成了腾讯互动...

    微信小程序demo:小胖看车团(源代码+截图)

    微信小程序demo:小胖看车团(源代码+截图)微信小程序demo:小胖看车团(源代码+截图)微信小程序demo:小胖看车团(源代码+截图)微信小程序demo:小胖看车团(源代码+截图)微信小程序demo:小胖看车团(源代码+截图)微信...

    小胖猪开糖果店(感知5以内的数量).doc

    这篇文档介绍的是一个针对幼儿园小班的数学教育活动——"小胖猪开糖果店",旨在帮助幼儿感知5以内的数量,并培养他们的分类能力。活动的设计遵循了《纲要》中关于幼儿数学教育的理念,强调从生活中学习和体验数学的...

    小胖减肥记作文.doc

    【小胖减肥记】这篇作文以幽默轻松的方式讲述了一个名叫小胖的孩子的减肥经历,从中我们可以提炼出几个与健康和生活习惯相关的知识点。 1. **肥胖与健康风险**:文章指出,过重或肥胖可能导致心血管疾病,增加身体...

    路小胖路由器怎么样好不好?路小胖路由器评测

    【路小胖路由器评测详解】 在当今的科技时代,路由器作为家庭网络的核心设备,其重要性日益凸显。尤其是在智能家居的普及下,路由器不仅扮演着连接互联网的角色,更成为智能家居系统中的关键节点。然而,市场上的...

    小红买菜_M?n_小红买菜_

    温暖的午后,小胖刚刚献完血,小胖的女朋友小红很疼爱他,决定晚上去去菜场买点蔬菜给吴小胖补补。 小红进入菜场发现她只带了n元,菜场有m种菜,但她希望买最贵的菜给小胖补补。输入格式:第一行输入一个nm(nm&lt;=...

    Web版基于Adobe Acrobat PDF转图片及图片合并工具

    Web版基于Adobe Acrobat PDF转图片及图片合并工具,需要安装Adobe Acrobat XI软件,Web版部署IIS的基于Adobe Acrobat也已经实现,需要的可以联系我,Web实现原理,客户端(浏览器)上传PDF到服务器中,服务器端处理...

    DirectX小胖娃走动源码

    这个“DirectX小胖娃走动源码”显然是一个使用DirectX实现的示例项目,它展示了如何通过编程使一个虚拟角色——小胖娃能够移动。我们将深入探讨DirectX中的DirectDraw和DirectSound两个组件,以及它们在游戏开发中的...

    WinFrom版基于Adobe Acrobat PDF转图片及图片合并工具

    基于Adobe Acrobat WinFromPDF转图片及图片合并工具,需要安装Adobe Acrobat XI软件,Web版部署IIS的基于Adobe Acrobat也已经实现,需要的可以联系我,Web实现原理,客户端(浏览器)上传PDF到服务器中,服务器端处理...

    echarts实例

    2. **数据交互**:ECharts支持从后台获取数据并动态展示,这涉及到Ajax请求或者Promise来获取JSON格式的数据,然后通过`setOption`方法更新图表内容。 3. **图表类型与配置**:ECharts支持多种图表,如折线图(line)...

    小胖、小瘦锻炼记.rar

    标题中的“小胖、小瘦锻炼记.rar”很可能是一个关于健康锻炼或减肥塑形的电子资源,以RAR格式压缩,通常包含多个文档或图像文件。RAR是一种常见的压缩格式,用于集合多个文件并减小它们的大小以便于存储和传输。 在...

    小胖看车团-微信团购小程序 预览版.rar

    总之,“小胖看车团-微信团购小程序”是一个集成了电商功能的微信小程序实例,涉及了微信小程序的全栈开发技术,包括前端UI设计、后端数据交互、用户交互以及微信平台的特有API。无论是初学者还是有经验的开发者,都...

Global site tag (gtag.js) - Google Analytics