2010-05-24 145 views
1

我正在尝试将一个PHP变量通过Flash变量传递给Flash。我的最终目标是将格式化为XML的字符串传递给Flash,但由于我正在努力挣扎,因此我已将所有内容都剥离到基本内容。我只是试图通过SWFObject通过FlashVars传递一个简单的PHP字符串变量到Flash,但有些不对。当我尝试传递php标签中的变量时,页面不会加载,但如果我只传递一个硬编码的字符串,它将加载。我的网页的基本结构是,我在上面,像这样宣布一些PHP:我的HTML中如何通过SWFObject将Flash变量传递给PHP变量

PHP

<?php 
    $test = "WTF"; 
?> 

一些HTML(这里排除了简单起见),然后JavaScript的SWFObject的嵌入:

<script type="text/javascript" src="js/swfobject2.js"></script> 
    <script type="text/javascript"> 
     // <![CDATA[ 
     var swfURL = "swfs/Init-Flash-PHP.swf"; 

     var flashvars = {}; 
      flashvars.theXML = <?php print $test ?>; 

     var params = {}; 
      //params.menu = "false"; 
      params.scale = "showAll"; 
      params.bgcolor = "#000000"; 
      params.salign = "TL"; 
      //params.wmode = "transparent"; 
      params.allowFullScreen = "true"; 
      params.allowScriptAccess = "always"; 

     var attributes = {}; 
      attributes.id = "container"; 
      attributes.name = "container"; 


     swfobject.embedSWF(swfURL, "container", '100%', '100%', "9.0.246", "elements/swfs/expressinstall.swf", flashvars, params, attributes); 


     // ]]> 
</script> 

而ActionScript 3代码的最基本的要素:

_paramObj = LoaderInfo(stage.loaderInfo).parameters; 
theText_txt.text = _paramObj['theXML']; 

如何使用SWFObject和FlashVars传递一个PHP变量?

谢谢。

回答

3

呃,我需要摆脱闪光变色,它的工作。

对于任何人的兴趣,这正是我需要的改变

flashvars.theXML = <?php print $test ?>; 

更改为:(!)

flashvars.theXML = escape('<?php print $test ?>'); 
1

越狱()不是逃避一个万无一失的方法

改用encodeURIComponent()。

这是从点9在FAQ:http://code.google.com/p/swfobject/wiki/faq

  • 如何传递的URI或HTML代码作为使用Flash变量的值?
  • 特殊字符和符号= 和&不能直接内部 Flash变量的值(因为 它们用于堆叠的flashvars 本身后者)被使用。

    可以 解决办法之前通过 这个问题逃避这些字符将它们作为Flash变量的值。一个 例如:

    encodeURIComponent方法( “&贸易”)将成为 %26trade

    值会在你的 SWF已经提供未编码的,所以需要你的SWF内没有 转义。

    注意encodeURIComponent方法不 所有浏览器,但在所有常见的现代 版本 可用。如果您需要完全向后 兼容性,则可以使用escape() 来代替,但请注意escape()不会 与双字节 字符(如中文)无法正常工作。

    您还可以通过使用手动逃避这些字符 :

    * %3D instead of = 
    * %26 instead of &