Can';从Flash访问PHP中的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

我正在将一些信息从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 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
  • 将URLLoader的
    dataFormat
    属性设置为
    URLLoaderDataFormat.VARIABLES
    ,以便它知道如何解析响应

  • 从PHP发送url变量格式的字符串。因此,您的PHP响应需要如下所示:

    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;