在Flex中使用HTTPService加载XML文件
因此,我一直在尝试将XML文件中的数据加载到datagrid中。该项目在Cairngorm框架中。XML文件位于web内容文件夹中。我在Services文件夹中有一个HTTPService调用在Flex中使用HTTPService加载XML文件,xml,apache-flex,datagrid,httpservice,Xml,Apache Flex,Datagrid,Httpservice,因此,我一直在尝试将XML文件中的数据加载到datagrid中。该项目在Cairngorm框架中。XML文件位于web内容文件夹中。我在Services文件夹中有一个HTTPService调用 <mx:HTTPService id = "getCategory" url = "assets/CategoryDept21Class1.xml" resultFormat = "e4x" /> 这就是我在委托中定义getCa
<mx:HTTPService
id = "getCategory"
url = "assets/CategoryDept21Class1.xml"
resultFormat = "e4x"
/>
这就是我在委托中定义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。如果问题出在url上,那么服务调用应该已经记录在您的后台,您应该会看到一条错误消息,如404) 如果没有明显的错误消息,那么这可能是一个安全错误。您是否提供了跨域策略文件 如果我的任何假设是错误的,请填写必要的信息。另外,请提供FlexSDK版本
注意:如果您作为独立应用程序运行此应用程序,则存在一个安全约束,不允许您从文件系统读取,除非您在Flash Builder中提供其他属性。我看不到您在任何地方为数据提供程序(类列表)赋值。还是我错过了呢?在result()中去掉roottag-resultSet是有效的!谢谢你!
public function getCategory() : void
{
service = ServiceLocator.getInstance().getHTTPService("getCategory") as HTTPService;
//Alert.show(service.url);
var token : AsyncToken = service.send();
token.addResponder(responder);
}
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));
}