Can';从Flash访问PHP中的XML变量?
我正在将一些信息从PHP发送到flash,并将一些不同的信息从PHP发送回flash。我将向PHP发送一个用户ID,并向Flash发送一个XML变量和一个索引 闪存代码:Can';从Flash访问PHP中的XML变量?,php,xml,actionscript-3,flash,Php,Xml,Actionscript 3,Flash,我正在将一些信息从PHP发送到flash,并将一些不同的信息从PHP发送回flash。我将向PHP发送一个用户ID,并向Flash发送一个XML变量和一个索引 闪存代码: var myLoader:URLLoader = new URLLoader(); var myRequest:URLRequest = new URLRequest(/*private info*/); myRequest.method = URLRequestMethod.POST; var memberInf
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:
当我执行此操作时,会出现以下错误:
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:
问题在于PHP的输出 显示的输出不是有效的xml(因为末尾有
3
)
这就是为什么删除索引时它会起作用
要纠正它,可以将索引放在xml中(作为根预设
节点的属性),或者在将其转换为AS3中的xml对象之前解析输出,如下所示:
var response:String = event.currentTarget.data;
var index:String = response.substr(response.lastIndexOf(">") + 1);
var newXML:XML = new XML(response.substring(0, response.lastIndexOf(">") + 1));
如果希望能够访问变量作为数据属性上的对象(例如event.currentTarget.data.xml
&event.currentTarget.data.index
),则需要执行以下操作:
xml=<xml></xml>&index=3
dataFormat
属性设置为URLLoaderDataFormat.VARIABLES
,以便它知道如何解析响应xml=<xml></xml>&index=3
不过,更简单的方法可能是使用JSON并在PHP中创建一个对象,然后在flash中执行echo JSON_encode(obj),然后执行var response:object=JSON.parse(event.currentTarget.data);是否尝试将PHP头设置为xml?
头(“内容类型:application/xml;charset=ISO-8859-15”)
刚刚尝试了这个,以及标题(“内容类型:text/xml”),都产生了与以前相同的错误:(您能显示php操作的实际输出吗?很可能您会得到这样的结果:3
,这是无效的xml,并且没有xml
url参数,因为AS3希望得到这样的结果:xml=&index=3
除了引用错误之外,php操作的Flash中没有任何输出>event.currentTarget.data,和xml
是唯一被回显的内容,xml在flash中被输出并且格式良好。@BadFeelingAboutThis:0xff0000 0x00ff00 0x0000ff 3'是我使用.TEXT时输出的内容。当我在onComplete函数中创建一组新的URLVariables,并访问
.xml`propert时在新的URLVariables中,我的输出为null(抱歉,我的注释中的xml在输出中格式良好),因此可能我错误地解释了flash中loader.data
的用法。如果我有两个变量要从PHP发送到flash,一个是xml对象(xml),另一个是整数(索引),我不能通过Flash单独访问这些元素吗?(即event.currentTarget.data.xml
,event.currentTarget.data.index
)。我是否仅限于访问loader.data
作为一个整体?谢谢。我记得现在看到了类似的事情。我是否会以类似于echo“$xml=$xml->saveXML()”的方式从PHP中回送这些内容;
?是的,然后在任何后续参数之间使用符号and。虽然我已经有大约十年没有实际使用PHP了,所以我在那里很生疏。非常感谢。它仍然不起作用,但我认为这是朝着正确的方向迈出的一步,我希望能找到从这里开始的方向。它对我来说是字符串:xml=0xff00000x00ff000x0000ff&index=3
。不幸的是,在PHP方面我无能为力
var response:String = event.currentTarget.data;
var index:String = response.substr(response.lastIndexOf(">") + 1);
var newXML:XML = new XML(response.substring(0, response.lastIndexOf(">") + 1));
xml=<xml></xml>&index=3
echo "xml=".$xml->saveXML();
echo "&index=".$index;