【问题标题】:Flex: XML data from httpservice in repeaterFlex:来自转发器中 httpservice 的 XML 数据
【发布时间】: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.movi​​es);到新的 XMLListCollection(myData.movi​​e);您所追求的是电影列表... myData.movi​​e 返回所有电影节点的 XMLList。 myData.movi​​es 是根目录,不会返回任何内容。
  • 谢谢,它有效。根据您的建议,我切换到 TileList 并更改了我的 XMLListCollection 的声明。我现在可以使用 {data.movi​​e_title} 访问我的 xml 的子节点(通过我的 tilelist 中的 itemrenderer)。

标签: xml apache-flex httpservice


【解决方案1】:

【讨论】:

  • -1 因为通常不包含数据但包含链接的问题不被认为是可接受的。如果您要编辑答案以引用链接中的相关段落,那会更好。
猜你喜欢
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
  • 2011-09-23
  • 1970-01-01
  • 1970-01-01
  • 2010-09-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多