![](/img/trans.png)
[英](Flex 3) How do I get data from a xml file using HTTPservice and save the return data as an array?
[英]Loading XML file using HTTPService in Flex
因此,我一直试图将数据从XML文件加载到数据网格中。 该项目在Cairngorm框架中。 XML文件位于Web内容文件夹中。 我在Services文件夹中有一个HTTPService调用。
<mx:HTTPService
id = "getCategory"
url = "assets/CategoryDept21Class1.xml"
resultFormat = "e4x"
/>
当我在一个dataGrid中进行选择时,应该使用XML文件中的数据填充另一个dataGrid。 下面是Classes数据网格。 当我单击一个类时,应该填充下一个数据网格。
<mx:DataGrid rowCount="10" enabled="true"
dataProvider="{classList}"
verticalScrollPolicy="on"
click = "onClass()"
id="classes" width="192" top="73" left="253" height="225">
<mx:columns>
<mx:DataGridColumn headerText="#" dataField="merchandiseClassNumber" width="50"/>
<mx:DataGridColumn headerText="Class Name" dataField="merchandiseClassDescription" width="150"/>
</mx:columns>
</mx:DataGrid>
这些是将被触发的方法。
private function selectClass(evt:ResultEvent):void{
//this.categoryList = new XMLListCollection(evt.result.resultSet);
this.categoryList= evt.result.resultSet.MerchandiseAssortmentCategory;
var request:AMTCategoryEvent;
CairngormEventDispatcher.getInstance().dispatchEvent(request);
}
private function onClass():void{
//Alert.show("you just clicked on a class ");
var event:AMTCategoryEvent = new AMTCategoryEvent();
CairngormEventDispatcher.getInstance().dispatchEvent(event);
}
这就是我在委托中定义getCategory()的方式
public function getCategory() : void
{
service = ServiceLocator.getInstance().getHTTPService("getCategory") as HTTPService;
//Alert.show(service.url);
var token : AsyncToken = service.send();
token.addResponder(responder);
}
这就是我在getCategoryCommand中所拥有的。
public function execute(event: CairngormEvent) : void{
var categoryEvent: AMTCategoryEvent = event as AMTCategoryEvent;
var deleg:Delegate = new Delegate(this);
deleg.getCategory();
//deleg.getCategory(categoryEvent.deptNumber, categoryEvent.classNum);
}
public function result(info:Object) :void{
trace("Get Category: Success");
// __model.categoryList = new XMLList(info.result.resultSet.MerchandiseAssortmentCategory);
var xmlbleh:XMLList=info.result.resultSet.MerchandiseAssortmentCategory.lastResult;
mx.controls.Alert.show(xmlbleh.toXMLString());
__model.categoryList = new XMLListCollection(XMLList(info.result.resultSet.MerchandiseAssortmentCategory.lastResult));
}
由于某种原因,它没有将xml文件中的数据读取到datagrid中。 这是我在这个网站上的第一个问题,如果问题明确,我不知道。 但是我该怎么办呢? 谢谢 :)
这个问题很清楚,但是您可能还有其他有用的信息。 我将尝试通过一系列问题来阐明这些问题。 (这可能属于注释,但是这里有大小限制,可能会变得很麻烦)
1-我希望您设法在委托中获得HttpService的引用。
2-我希望您设法调试到进行异步服务调用为止。
3-我假设永远不会调用结果回调函数。 (或对此事的过错)。
4-我假设该应用程序已部署在Web服务器中。
如果我所有的假设都是正确的,那么问题可能出在url的形成上。 我假设您正在尝试提供相对路径,但是我将尝试提供绝对URL。 如果问题出在网址上,则应该在后台记录该服务调用,并且您应该会看到类似404的错误消息。
如果没有明显的错误消息,则可能是安全错误。 您是否提供了跨域策略文件。
如果我的任何假设是错误的,请填写必要的信息。 另外,请提供Flex SDK版本。
注意:如果将其作为独立的应用程序运行,则存在安全限制,除非您在Flash Builder中提供其他属性,否则该安全限制将不允许您从文件系统读取。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.