【发布时间】:2012-11-18 20:22:42
【问题描述】:
我正在尝试使用来自 httpservice 的结果填充标签。此结果来自生成 xml 的 phpscript。当我运行它时,我只是得到一个空白页。我的应用代码如下:
'<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="955" minHeight="600"
initialize="doSend()">
<fx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.collections.ArrayList;
import mx.collections.XMLListCollection;
import mx.rpc.events.ResultEvent;
[Bindable]
private var myData:XML;
public function doSend():void
{
getWatchlist.send();
}
protected function getXML(event:ResultEvent):void
{
var myData:XML = XML(event.result);
rptWatchlist.dataProvider = new XMLListCollection(myData.movies);
}
]]>
</fx:Script>
<fx:Declarations>
<mx:HTTPService url="http://****/phpscripts/selectWatchlist.php"
id="getWatchlist"
showBusyCursor="true"
method="POST"
result="getXML(event)"
resultFormat="e4x">
<!--todo: userid ophalen -->
<!--<mx:request xmlns="">
<userid>
1
</userid>
</mx:request>-->
</mx:HTTPService>
</fx:Declarations>
<mx:HBox>
<mx:Repeater id="rptWatchlist">
<s:Label text="{rptWatchlist.currentItem.movie}" />
</mx:Repeater>
</mx:HBox>
'
我的 phpscript 的结果是一个 xml:
<?xml version="1.0" encoding="utf-8" ?>
<movies>
<movie>
<watched>N</watched>
<poster_url>http://cf2.imgobject.com/t/p/w185/2lECpi35Hnbpa4y46JX0aY3AWTy.jpg</poster_url>
<movie_title>Fight Club</movie_title>
</movie>
</movies>
【问题讨论】:
-
中继器很棘手;而且我不相信更改中继器上的 dataProvider 会导致它重新循环元素;这就是为什么你什么也没看到。我强烈建议改用 List。我发现中继器只是个问题。
-
更改这个新的 XMLListCollection(myData.movies);到新的 XMLListCollection(myData.movie);您所追求的是电影列表... myData.movie 返回所有电影节点的 XMLList。 myData.movies 是根目录,不会返回任何内容。
-
谢谢,它有效。根据您的建议,我切换到 TileList 并更改了我的 XMLListCollection 的声明。我现在可以使用 {data.movie_title} 访问我的 xml 的子节点(通过我的 tilelist 中的 itemrenderer)。
标签: xml apache-flex httpservice