我正在尝试使用PHP变量并通过Flash变量将其传递给Flash。我的最终目标是将格式化为XML的字符串传递给Flash,但由于我在苦苦挣扎,所以我已经将所有内容都删除了。我只是试图通过带有SWFObject的FlashVars将一个简单的PHP字符串变量传递给Flash,但有些事情是不对的。当我尝试在php标签内传递变量时,页面将不会加载,但如果我只传递一个硬编码字符串,它将加载。我的页面的基本结构是我在顶部声明了一些PHP:
PHP
<?php
$test = "WTF";
?>
一些HTML(为简单起见,此处排除),然后嵌入我的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变量?
感谢。
答案 0 :(得分:3)
呃,我需要逃离Flash变种才有效。
对于任何有兴趣的人来说,这就是我需要改变的地方
flashvars.theXML = <?php print $test ?>;
对此:
flashvars.theXML = escape('<?php print $test ?>');
答案 1 :(得分:1)
escape()不是逃避的简单方法(!)
改为使用encodeURIComponent()。
这是来自FAQ的第9点:http://code.google.com/p/swfobject/wiki/faq
- 如何使用flashvars将URI或HTML代码作为值传递?
醇>特殊字符和符号= 和&amp;不能直接在里面使用 flashvars值(后者因为 它们用于堆叠flashvars 本身)。
您可以解决此问题 之前逃避这些角色 将它们作为flashvar值传递。一个 例如:
encodeURIComponent(“&amp; trade”)将 成为%26trade
这些值将在您的 swf已经没有编码,所以没有 你的瑞士法郎需要进行无聊。
请注意,encodeURIComponent不是 适用于所有浏览器,但是 提供所有常见的现代 版本。如果你需要完全倒退 兼容性,你可以使用escape() 相反,但请注意escape()的确如此 双字节不能很好地工作 人物(如中文)。
您也可以转义这些字符 手动使用:
* %3D instead of = * %26 instead of &