我想在我的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对象的任何部分
发布于 2011-01-19 08:15:09
我相信这里发生的事情是Javascript在flashvars变量上调用.toString(),并将结果字符串传递给flash。如果我的预感是正确的,那么您需要将JSON作为字符串传递,如下所示。
var flashvars = "{xmlFile:'myFile.xml',
preface:'Preface',
{
'url': 'flash/someflash.swf',
'x': '375',
'y': '237'
}
}";发布于 2011-01-19 08:42:49
Flashvars作为名称/值对的集合传递,格式与GET或POST (url编码)参数相同。因此,对于名称和值,您都需要内容是字符串,并进行适当转义。除了硬编码JSON字符串,这很容易出错,您可以将数据写入php assoc数组中,然后将其编码为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) (通过encodeURIComponent或一些自制函数)为你转义url;我不记得是不是这样,但如果是这样的话,你就不必在你的php代码中调用rawurlencode了,因为你的数据会被编码两次。我现在还不能测试它,但是在php中使用和不使用url编码都可以试试;两者中的一种应该可以正常工作。
发布于 2011-01-19 10:47:44
您实际上在哪里使用/需要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] );
}https://stackoverflow.com/questions/4728660
复制相似问题