2012-12-26 47 views
0

我試圖從XML文件中填充與國家/地區的組合框。不幸的是,組合框沒有被填滿。我應該如何解決這個問題?提前致謝!在Flex中使用XML填充組合框

這裏是我的代碼:

protected function navigatorcontent2_creationCompleteHandler(event:FlexEvent):void 
{ 
    fillCboCountries.addEventListener(ResultEvent.RESULT, fillCombobox);  
    fillCboCountries.send();   
} 


protected function fillCombobox(event:ResultEvent):void 
{   
    cboCountries.dataProvider=event.result.global.countryItem;    
} 

<fx:Declarations> 
<s:HTTPService id="fillCboCountries" url="https://marnixcoosemans2013.dreamhosters.com/scripts/countries_select.php"/> 
</fx:Declarations> 

<s:ComboBox id="cboCountries" x="10" y="414" width="173" labelField="countryLabel"/> 
+0

你可以發佈你的XML結構嗎?實際數據的路徑可能存在問題。 – Anton

+0

嗨,我的XML是這樣的: ............. 阿富汗 ... ........... 阿爾巴尼亞 .................. ..... user1930785

回答

0

沒有看到什麼服務調用的XML響應的樣子,我可以建議的唯一的事情就是設置resultFormatHTTPService爲「E4X」:

<s:HTTPService id="fillCboCountries" 
    url="https://marnixcoosemans2013.dreamhosters.com/scripts/countries_select.php" 
    resultFormat="e4x" /> 

這告訴HTTPService響應是XML,並且您期望使用e4x表達式獲取數據。

1

您的代碼沒有錯誤。我已經將它粘貼到我的空白項目中,並且在組合框中看到了您的字段。

我改變的唯一的事情是http儘管有https。

所以問題出在數據源中,而不是源代碼中!嘗試沒有https。

<?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" 
      creationComplete="navigatorcontent2_creationCompleteHandler(event)"> 

<fx:Declarations> 
    <s:HTTPService id="fillCboCountries" url="http://marnixcoosemans2013.dreamhosters.com/scripts/countries_select.php"/> 
</fx:Declarations> 

<fx:Script> 
    <![CDATA[ 
     import mx.events.FlexEvent; 
     import mx.rpc.events.ResultEvent; 

     protected function navigatorcontent2_creationCompleteHandler(event:FlexEvent):void 
     { 
      fillCboCountries.addEventListener(ResultEvent.RESULT, fillCombobox);  
      fillCboCountries.send();   
     } 

     protected function fillCombobox(event:ResultEvent):void 
     {   
      cboCountries.dataProvider=event.result.global.countryItem;    
     } 
    ]]> 
</fx:Script> 

<s:ComboBox id="cboCountries" x="10" y="414" width="173" labelField="countryLabel"/> 
</s:Application> 
+0

確認。 'https:// marnixcoosemans2013.dreamhosters.com/scripts/countries_select.php'不可用,但它是用'http:'開啓的。 – user1875642

+0

謝謝,源代碼也適用於我,但在我的代碼中有HTTP請求,我得到這個錯誤: RPC Fault faultString =「HTTP請求錯誤」faultCode =「Server.Error.Request」faultDetail =「錯誤:[IOErrorEvent type =「ioError」bubbles = false cancelable = false eventPhase = 2 text =「錯誤#2032:流錯誤。 URL:http:// localhost:37813/scripts/countries_select.php?hostport = marnixcoosemans2013.dreamhosters.com&https = N&id = 907E7DC4-A34C-188D-FC2E-DBAD7EE678DF「]。URL:http://marnixcoosemans2013.dreamhosters.com/ scripts/countries_select.php「] – user1930785

+0

它可能是安全設置的問題。這是Flex沙箱的一個問題。通常一個crossdomain.xml文件有幫助。 – Anton

0

謝謝大家的幫助。

我通過將我的代碼複製到一個新項目中解決了這個問題。不幸的是,我不知道原始項目出了什麼問題。