Adobe Flex 动作脚本 - 响应对象
Posted
技术标签:
【中文标题】Adobe Flex 动作脚本 - 响应对象【英文标题】:Adobe Flex Action Script - Response Object 【发布时间】:2013-04-13 22:17:38 【问题描述】:我有 Adobe 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 Something
与Something()
时遇到了转换问题。我只是不知道,在我的脑海中,哪一个是有问题的。听起来我的直觉是对的;第一个是正确的。
【参考方案1】:
<result>
是您的 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 动作脚本 - 响应对象的主要内容,如果未能解决你的问题,请参考以下文章