您的位置:首页 > Web前端 > JavaScript

在flex4.7中获取js传递过来的json并解析

2014-09-19 15:37 381 查看
看上去简简单单的问题,前前后后用了我一两天的时间,中间一些本来调通的问题,因为没有保存又重新Debug了很长时间。

首先,我要实现的目的是从js中传递json参数到flex中,然后在flex要对传递过来的参数进行解析。

在html页面中,我们需要这样写

<script type="text/javascript">
var swfVersionStr = "${version_major}.${version_minor}.${version_revision}";//swf要求的Flash版本号
var xiSwfUrlStr = "${expressInstallSwf}";//快捷安装的swf
//参数传递,注意格式为{params1:"",params2:""}出现其他格式时会被解析成Object,然后怎么都得不到想要的结果,
//如果有人可以从传递的Object得到要的值,希望可以给小弟指点一下
var flashvars = {num:"1",json:"[{'summoney':'666310.09','sumcount':'652','sumdate':'2014-08-05'},{'summoney':'0.19','sumcount':'9','sumdate':'2014-08-08'}]" };
//当前swf在网页中显示的样式,包括背景等
var params = {};
params.quality = "high";
params.bgcolor = "${bgcolor}";
params.allowscriptaccess = "sameDomain";
params.allowfullscreen = "true";
//当前swf的属性,包括id,name,对齐方式等
var attributes = {};
attributes.id = "${application}";
attributes.name = "${application}";
attributes.align = "middle";
//调用swfobject.js中的swf加载的方法,参数列表
//(1、swf路径;2、在网页中显示的组件id-必须存在否则不显示;
//3、swf所占的宽度,单位默认为像素px,直接给定数值即可;4、swf所占的高度,单位同宽度;
//5、swf要求的Flash版本号;6、快捷安装显示的swf;7、传递给Flash的参数;8、swf的样式;
//9、swf的基本属性)
swfobject.embedSWF(
"${swf}.swf", "flashContent",
"${width}", "${height}",
swfVersionStr, xiSwfUrlStr,
flashvars, params, attributes);
swfobject.createCSS("#flashContent", "display:block;text-align:left;");
</script>
<div id="flashContent"><!--当没有安装Flashplayer或者版本过低时,到官网下载安装-->
<p>
To view this page ensure that Adobe Flash Player version
${version_major}.${version_minor}.${version_revision} or greater is installed.
</p>
<script type="text/javascript">
var pageHost = ((document.location.protocol == "https:") ? "https://" : "http://");
document.write("<a href='http://www.adobe.com/go/getflashplayer'><img src='"
+ pageHost + "www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a>" );
</script>
</div>


在网页中,主要注意的是参数的格式,因为这是本文的重点。

在flex中(我使用的是4.7),也就是我们用于生成swf的.mxml文件中,主要代码如下

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="100%" minHeight="100%">
<fx:Script>
<![CDATA[
public var arrList:Array;
private function onCreationComplete() : void {
var parameters : Object = this.parameters;//获得参数(还可以用FlexGlobals.topLevelApplication.parameters),旧版本用Application.application.parameters获取
var str:String = parameters.json;//参数列表中json参数
var regE:RegExp=new RegExp("'", "g");//需要将"\'"转换为"\""否则会提示json串错误
var array:Array=(JSON.parse(str.replace(regE,'"')) as Array);
var para:String = "接收数据:\nnum="+parameters.num+";\njson=";
for each(var object:Object in array){
para += "日期:"+object["sumdate"]+";金额:";
para += object["summoney"]+";笔数:";
para += object["sumcount"]+";";
}
lblResult.text = para;//在label中显示数据
}
]]>
</fx:Script>
<s:HGroup>
<s:Label id="lblResult"/>
</s:HGroup>
</s:Application>

上面的代码在Flash Builder中编辑后运行,运行结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  flex4 json flash js html
相关文章推荐