Adobe Flex 动作脚本 - 响应对象

Posted

技术标签:

【中文标题】Adobe Flex 动作脚本 - 响应对象【英文标题】:Adobe Flex Action Script - Response Object 【发布时间】: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() 时遇到了转换问题。我只是不知道,在我的脑海中,哪一个是有问题的。听起来我的直觉是对的;第一个是正确的。 【参考方案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() 调用中的值。我已经编辑并更正了代码。 我删除了对您的更改的反对票。我怀疑你在正确的轨道上。我认为原始代码中的“双重转换”可能有问题;但我需要通过代码来确定我的想法。

以上是关于Adobe Flex 动作脚本 - 响应对象的主要内容,如果未能解决你的问题,请参考以下文章

使用纯动作脚本或adobe flash cs4 professional开发游戏

从Flex-mxml(动作脚本)移动到另一种技术

Adobe Flash动作脚本3

是否有任何EPUB库动作脚本(adobe air)?

使用动作脚本填写flex中的空白问题[关闭]

如何将自定义类导入 Flex 中的 mxml 文件? (动作脚本 3)