这是我的第一个CMS应用程序,其中包括Delphi 7。
我使用5个不同的XMLListCollections,它们是从服务器上的本地文件动态加载的。 HTTPService很好地将第一个加载到DataGrid中,但是在加载任何后续XML文件时,它会加载与以前完全相同的集合!我认为这必须是缓存吗?
如何在加载本地XML文件时关闭缓存?我已经尝试了一些建议,比如涉及标题等等,但似乎没有任何东西可以直接处理加载本地文件。
private function loadXMLData(urlVar:String):void
var httpService:HTTPService = new HTTPService();
httpService.url = urlVar;
httpService.resultFormat = "e4x";
httpService.addEventListener(FaultEvent.FAULT, httpService_fault);
httpService.addEventListener(ResultEvent.RESULT, httpService_result);
httpService.send();
}
private function httpService_fault(evt:FaultEvent):void {
var title:String = evt.type + " (" + evt.fault.faultCode + ")";
var text:String = evt.fault.faultString;
alert = Alert.show(text, title);
}
private function httpService_result(evt:ResultEvent):void {
var xmlList: XMLList;
xmlList = XML(evt.result).Events;
ArtistsData = new XMLListCollection(xmlList);
}
答案 0 :(得分:1)
我不是安静的Delphi或Flex家伙。但原则相同。我们在C#/ Silverlight中做的是在url的末尾附加一个随机查询字符串。
所以你有网址: -
httpService.url = urlVar;
你想做的事: -
httpService.url = urlVar + 'Date=' + currentdatetimealongwithmilliseconds;
这绝对应该忽略缓存并发出新请求。
注意: - 正如我所说,我不是Flex人,您需要在灵活解决方案中转换上述行。
答案 1 :(得分:0)
在编辑代码时,我注意到语法错误。括号的数量不匹配。我认为应该有一个括号,我用你的代码添加并加粗了一个?
我不知道这是否会解决您的问题,但是消除代码中任何错误的内容会缩小问题范围。:
private function loadXMLData(urlVar:String) { // <== HERE?
var httpService:HTTPService = new HTTPService();
httpService.url = urlVar;
httpService.resultFormat = "e4x";
httpService.addEventListener(FaultEvent.FAULT, httpService_fault);
httpService.addEventListener(ResultEvent.RESULT, httpService_result);
httpService.send();
}
private function httpService_fault(evt:FaultEvent) {
var title:String = evt.type + "(" + evt.fault.faultCode + ")";
var text:String = evt.fault.faultString;
alert = Alert.show(text, title);
}
private function httpService_result(evt:ResultEvent) {
var xmlList: XMLList;
xmlList = XML(evt.result).Events;
ArtistsData = new XMLListCollection(xmlList);
}