我想在我的flashvars中使用josn而我遇到了麻烦
这是我的json
var flashvars = {
xmlFile: '<?php echo $preface.$xmlpath; ?>',
preface: '<?php echo $preface; ?>',
"preload": {
"url": "flash/someflash.swf",
"x": "375",
"y": "237"
}
};
这是我一直在尝试的事情
var jsondata:String = this.loaderInfo.parameters.preload;
if(jsondata){
//var jsonData:Object = JSON.decode(jsondata.toString()) ;
error_txt.text = jsondata.toString();
}
error_txt返回“object Object”但我无法访问json对象的任何部分
答案 0 :(得分:1)
我相信这里发生的事情是Javascript在你的flashvars变量上调用.toString()并将结果字符串传递给flash。如果我的预感是正确的,你需要将JSON作为字符串传递给她。
var flashvars = "{xmlFile:'myFile.xml',
preface:'Preface',
{
'url': 'flash/someflash.swf',
'x': '375',
'y': '237'
}
}";
答案 1 :(得分:1)
Flashvars作为名称/值对的集合传递,格式与GET或POST(url编码)参数相同。因此,对于名称和值,您需要将内容作为字符串进行正确转义。除了对JSON字符串进行硬编码(这有点容易出错)之外,您可以在php关联数组中编写数据,然后将其编码为JSON,然后对其进行url编码。结果字符串将作为值传递。
这样的事情(我实际上没有测试过这个片段!)
<?php
$preload_data = array(
"url" => "flash/someflash.swf",
"x" => "375",
"y" => "237"
);
$preload_flashvar = rawurlencode(json_encode($preload_data));
?>
var flashvars = {
xmlFile: '<?php echo $preface.$xmlpath; ?>',
preface: '<?php echo $preface; ?>',
preload: '<?php echo $preload_flashvar; ?>'
};
<强> PS 强>
第二个想法,SWFObject(你似乎用来嵌入swf)很可能会为你逃避url(通过encodeURIComponent或一些自制函数);我不记得是不是这样,但如果是这样的话,你不必在你的php代码中调用rawurlencode
,因为你的数据会被urlencoded两次。我现在无法测试这个,但是在php中尝试使用和不使用url-encoding进行测试;其中一个应该工作正常。
答案 2 :(得分:0)
你在哪里实际使用/需要JSON?...
var flashvars = {
xmlFile: '<?php echo $preface.$xmlpath; ?>',
preface: '<?php echo $preface; ?>',
preload: {
url: "flash/someflash.swf",
x: "375",
y: "237"
}
};
//in AS3
var params:Object = this.loaderInfo.parameters;
if(params != null)
{
var preload:Object = params.preload;
for( var name:String in preload )
trace( preload[name] );
}