真的让我发疯,无法获得HTTPService对象的结果。完成对服务器的调用后,将触发结果事件。一切正常,服务器可以毫无错误地提供XML数据或JSON数据。但是如何处理事件对象"结果事件",我不清楚。
让我向您展示一些代码:
<fx:Declarations>
<s:HTTPService id="hsConfig"
url="{IR_BASE_URL}/getconfig.json"
result="onGetConfig(event)"
fault="onGetConfigError(event)"
method="POST"
showBusyCursor="false"
resultFormat="array"
makeObjectsBindable="true"
>
<s:request xmlns="">
<post1>Hello</post1>
<post2>World</post2>
</s:request>
</s:HTTPService>
</fx:Declarations>
然后是一些动作脚本:
protected function onGetConfig(e:ResultEvent):void
{
//var adata:XMLList = XML.(e.result);
var data:Object = e.result,
oo : HTTPService = (e.currentTarget as HTTPService);
trace( oo.lastResult );
trace( e.result.lastResult );
trace( data.cfg );
trace( e.result.length );
if( e.result.length )
{
trace( e.result[0].length );
}
}
服务器返回的 XML:
<?xml version="1.0" encoding="UTF-8"?>
<cfg>
<param1>Hello</param1>
<param2>World</param2>
</cfg>
例如,trace( e.result.cfg )
引发名称不存在的错误。尝试了几件事,并使用调试器查看属性 e.result 内的内容。我可以看到结果是一个带有一个元素 [0] 的 ArrayCollection,该元素是一个 ObjectProxy。
我在互联网上看到了一些"解决方案",但所有这些都使用数据网格来显示结果,但这不是我想要的。我想像一个简单的数组或对象一样访问它。
我该怎么做?
尝试将resultFormat="array"
更改为resultFormat="e4x"
现在e.result.param1
应该返回"Hello",e.result.param2
应该返回"World" 您可以将它们粘贴到数组、自定义类中或将其绑定到视图中