【问题标题】:Adobe Flex Action Script - Response ObjectAdobe Flex 动作脚本 - 响应对象
【发布时间】:2013-04-13 22:17:38
【问题描述】:

我有 Adob​​e Flex 应用程序,我从 cgi 脚本接收响应对象为 XML

var loader:URLLoader = new URLLoader();
loader.dataFormat = URLLoaderDataFormat.TEXT;
loader.addEventListener(Event.COMPLETE, httpResult);

loader.load(request);

private function httpResult(e:Event):void
{   
    Alert.show("XML: " + new XML(e.target.data));
    var result:XML = XML(e.target.data) as XML;
    Alert.show("hasOwnProperty(result): " + result.hasOwnProperty("result"));
}

下面是我在警报“XML:”中的响应对象

<result>
    <update>insert</update>
</result>

但警报“hasOwnProperty(result):”显示“False”

【问题讨论】:

  • 我认为您不需要将数据转换两次。尝试var result:XML = XML(e.target.data)var result:XML = e.target.data as XML;,但不能同时使用。我的直觉是你需要第一个。
  • @www.Flextras.com,第一个 (XML(e.target.data)) String 结果转换为 XML(如果格式正确),第二种方法将尝试将String 读取为XML,这将失败,因为String 不是XML(它是一个XML 格式的字符串)。顺便说一句,双重铸造不是问题,它只是多余的......
  • @NemoStein e.target.data 是一个通用的 Flex 对象;不是字符串。我知道我在某些情况下使用as SomethingSomething() 时遇到了转换问题。我只是不知道,在我的脑海中,哪一个是有问题的。听起来我的直觉是对的;第一个是正确的。

标签: xml actionscript-3 apache-flex actionscript


【解决方案1】:

&lt;result&gt; 是您的 XML 的 root element
请尝试以下操作:

private function httpResult(e:Event):void
{   
    var result:XML = XML(e.target.data);
    Alert.show("has update property: " + result.hasOwnProperty("update"));
}

编辑:为了清楚起见,请看以下代码:

var xml:XML = XML("<result><update>insert</update></result>");

trace("XML:", xml);
trace("result:", xml.hasOwnProperty("result"));
trace("update:", xml.hasOwnProperty("update"));

控制台中的输出会是这样的:

XML: <result>
  <update>insert</update>
</result>
result: false
update: true

【讨论】:

  • -1。对不起;这与提供的代码有何不同?除了删除第一个警报并更改第二个警报上的文本字符串之外,您是否做了其他事情?
  • @www.Flextras.com, @Anton 抱歉,我刚刚忘记更改 result.hasOwnProperty() 调用中的值。我已经编辑并更正了代码。
  • 我删除了对您的更改的反对票。我怀疑你在正确的轨道上。我认为原始代码中的“双重转换”可能有问题;但我需要通过代码来确定我的想法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-29
  • 1970-01-01
  • 2013-06-12
  • 2011-02-18
相关资源
最近更新 更多