2012-11-30 34 views
1

我試圖用httpservice中的結果填充標籤。這個結果來自一個生成xml的phpscript。當我運行它時,我只是得到一個空白頁面。我的應用程序的代碼如下:Flex:中繼器中httpservice的XML數據

'<?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> 
+0

中繼器是棘手的;我不相信改變中繼器上的dataProvider會導致它重新遍歷元素;這就是爲什麼你什麼都看不到。我強烈建議使用List來代替。我發現中繼器只是問題。 – JeffryHouser

+0

更改這個新的XMLListCollection(myData.movi​​es);到新的XMLListCollection(myData.movi​​e);你所追求的是電影列表... myData.movi​​e返回所有電影節點的XMLList。 myData.movi​​es是根,不會返回任何內容。 –

+0

謝謝,它的工作原理。我切換到TileList並根據您的建議更改了我的XMLListCollection的聲明。我現在可以使用{data.movi​​e_title}訪問我的xml的子節點(通過我的tilelist中的itemrenderer)。 – Steven

回答