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>
中繼器是棘手的;我不相信改變中繼器上的dataProvider會導致它重新遍歷元素;這就是爲什麼你什麼都看不到。我強烈建議使用List來代替。我發現中繼器只是問題。 – JeffryHouser
更改這個新的XMLListCollection(myData.movies);到新的XMLListCollection(myData.movie);你所追求的是電影列表... myData.movie返回所有電影節點的XMLList。 myData.movies是根,不會返回任何內容。 –
謝謝,它的工作原理。我切換到TileList並根據您的建議更改了我的XMLListCollection的聲明。我現在可以使用{data.movie_title}訪問我的xml的子節點(通過我的tilelist中的itemrenderer)。 – Steven