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

看上去简简单单的问题,前前后后用了我一两天的时间,中间一些本来调通的问题,因为没有保存又重新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中编辑后运行,运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值