【发布时间】:2015-11-05 10:30:00
【问题描述】:
我将一些信息从 PHP 发送到 flash,并将一些不同的信息从 PHP 发送回 flash。我正在向 PHP 发送一个用户 ID,并将一个 XML 变量和一个索引发送回 Flash。
Flash 代码:
var myLoader:URLLoader = new URLLoader();
var myRequest:URLRequest = new URLRequest(/*private info*/);
myRequest.method = URLRequestMethod.POST;
var memberInfo:URLVariables = new URLVariables();
memberInfo.member_id = 1817;
myRequest.data = memberInfo;
myLoader.addEventListener(Event.COMPLETE, onXMLLoad);
myLoader.load(myRequest);
function onXMLLoad(event:Event)
{
var newXML:XML = new XML(event.currentTarget.data.xml);
var index:int = new int(event.currentTarget.data.index);
}
PHP:
$xml = new DOMDocument("1.0");
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$presets = $xml->createElement("presets");
$red = $xml->createElement("colors", "0xff0000");
$green = $xml->createElement("colors", "0x00ff00");
$blue = $xml->createElement("colors", "0x0000ff");
$presets->appendChild($red);
$presets->appendChild($green);
$presets->appendChild($blue);
$xml->appendChild($presets);
$index = 3;
echo $xml->saveXML();
echo $index;
当我这样做时,我得到这个错误:
ReferenceError: Error #1069: Property xml not found on String and there is no default value.
我该如何解决这个问题?我认为这与 XML 实际上是一个字符串有关,但我不太确定。
这是 PHP 的输出:
<?xml version="1.0"?>
<presets>
<colors>0xff0000</colors>
<colors>0x00ff00</colors>
<colors>0x0000ff</colors>
</presets> 3
注意: 如果我从 PHP 中删除索引变量并且只将“xml”作为发送到 Flash 的唯一内容,我可以使用“event.currentTarget.data”访问它,它会正常工作。
闪光:
var myLoader:URLLoader = new URLLoader();
var myRequest:URLRequest = new URLRequest(/*private info*/);
myRequest.method = URLRequestMethod.POST;
var memberInfo:URLVariables = new URLVariables();
memberInfo.member_id = 1817;
myRequest.data = memberInfo;
myLoader.addEventListener(Event.COMPLETE, onXMLLoad);
myLoader.load(myRequest);
function onXMLLoad(event:Event)
{
var newXML:XML = new XML(event.currentTarget.data);
}
PHP:
$xml = new DOMDocument("1.0");
$xml->formatOutput = true;
$xml->preserveWhiteSpace = false;
$presets = $xml->createElement("presets");
$red = $xml->createElement("colors", "0xff0000");
$green = $xml->createElement("colors", "0x00ff00");
$blue = $xml->createElement("colors", "0x0000ff");
$presets->appendChild($red);
$presets->appendChild($green);
$presets->appendChild($blue);
$xml->appendChild($presets);
echo $xml->saveXML();
【问题讨论】:
-
你试过把php header设置成xml吗?
header( "content-type: application/xml; charset=ISO-8859-15" ); -
刚试过这个,还有header("content-type: text/xml"),都产生了和之前一样的错误:(
-
你能显示 php 操作的实际输出吗?您可能会得到这样的东西:
<xml></xml>3,它不是有效的 xml,并且没有xmlurl 参数,因为 AS3 期待这样的东西:xml=<xml></xml>&index=3 -
除了 ReferenceError 之外,php 操作在 Flash 中没有输出。当我使用
event.currentTarget.data,并且xml是唯一被回显的东西时,xml 被输出并在闪存中格式化。 -
@BadFeelingAboutThis:
<?xml version="1.0"?> <presets> <colors>0xff0000</colors> <colors>0x00ff00</colors> <colors>0x0000ff</colors> </presets> 3' is what is outputted when I use .TEXT. When I create a new set of URLVariables inside my onComplete function, and access the.xml` 新 URLVariables 的属性,我得到 null 作为我的输出。 (对不起,我评论中的xml在输出中格式正确)
标签: php xml actionscript-3 flash