2013-01-14 287 views
2

运行我的Flex应用程序后,它成功获取SOAP响应并在下拉框中填充值,但它们为空,换句话说,当我将鼠标悬停在下拉框上时,我可以看到它有三个空值。下拉列表不显示它的值

我的Flex代码

<fx:Script> 

    <![CDATA[ 
     import mx.events.FlexEvent; 

     protected function 
        dropDownList_creationCompleteHandler(event:FlexEvent):void 
     { 
      myResults.token = myservice.myUsers(); 
     } 

    ]]> 
</fx:Script> 

    <fx:Declarations> 

    <myservice:myservice id="myservice"/> 

    <s:CallResponder id="myResults"/> 

</fx:Declarations> 

<s:FormItem label="Label"> 
    <s:DropDownList id="dropDownList" 
     creationComplete="dropDownList_creationCompleteHandler(event)" 
     labelField="name"> 
     <s:AsyncListView list="{myResults.lastResult}"/> 
    </s:DropDownList> 
    </s:FormItem> 

XML是

<?xml version="1.0" encoding="UTF-8"?> 
<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <soapenv:Body> 
    <myusersResponse xmlns="http://Services.com"> 
     <myusersReturn> 
     <name>Nicole</name> 
     <age>50</age> 
     </myusersReturn> 
     <myusersReturn> 
     <name>Jayne</name> 
     <age>40</age> 
     </myusersReturn> 
     <myusersReturn> 
     <name>Alex</name> 
     <age>33</age> 
     </myusersReturn> 
    </myusersResponse> 
    </soapenv:Body> 
</soapenv:Envelope> 
+2

响应是什么样的?如果它是XML并且'name'是一个属性,'labelField'的值应该是'@ name'。 – RIAstar

回答

1

检查的xmlns namspace。

下面的代码我写模仿你的问题能正常工作:

<?xml version="1.0" encoding="utf-8"?> 

<![CDATA[ 
     import mx.collections.XMLListCollection; 
     import mx.events.FlexEvent; 
     import mx.messaging.messages.SOAPMessage; 
     [Bindable] 
     var _result:*; 

     protected function 
      dropDownList_creationCompleteHandler(event:FlexEvent):void 
     { 
      var xml:XML = <Body> 
          <myusersResponse> 
           <myusersReturn> 
           <name>Nicole</name> 
           <age>50</age> 
           </myusersReturn> 
           <myusersReturn> 
           <name>Jayne</name> 
           <age>40</age> 
           </myusersReturn> 
           <myusersReturn> 
           <name>Alex</name> 
           <age>33</age> 
           </myusersReturn> 
          </myusersResponse> 
          </Body>; 

     _result = new XMLListCollection(new XMLList(xml.myusersResponse.myusersReturn)); 
     } 

    ]]> 
</fx:Script> 

<fx:Declarations> 

</fx:Declarations> 

<s:FormItem label="Label"> 
    <s:DropDownList id="dropDownList" 
        creationComplete="dropDownList_creationCompleteHandler(event)" 
        labelField="name"> 
     <s:AsyncListView list="{_result}"/> 
    </s:DropDownList> 
</s:FormItem> 

但是,如果你添加的xmlns =“http://Services.com到myusersResponse标记失败

编辑: 在c因为你需要命名空间解决方法,我只是在这里用名字空间解决方案回答Jack Moores问题My flex code does not parse the soap response properly