1

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は「オブジェクトオブジェクト」を返しますが、jsonオブジェクトのどの部分にもアクセスできません

4

3 に答える 3

1

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 エスケープを行う可能性が非常に高いです。その場合は覚えていませんが、そうである場合は、rawurlencodeデータが 2 回 urlencode されるため、php コードを呼び出す必要はありません。私は今これをテストすることはできませんが、php での URL エンコーディングの有無にかかわらず試してみてください。2 つのうちの 1 つが正常に動作するはずです。

于 2011-01-19T00:42:49.047 に答える
1

ここで起こっていることは、Javascript が flashvars 変数で .toString() を呼び出し、結果の文字列をフラッシュに渡すことだと思います。私の勘が正しければ、JSON をこのような文字列として渡す必要があります。

var flashvars = "{xmlFile:'myFile.xml',
                  preface:'Preface',
                   {
                    'url': 'flash/someflash.swf',
                    'x': '375',
                    'y': '237'
                   }
                 }";
于 2011-01-19T00:15:09.157 に答える
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] );
}
于 2011-01-19T02:47:43.567 に答える