我在刷新xml文件时遇到问题。我通过HTTP服务组件将其引入并将其放入可绑定数组_cattArr中,我将其用作网格的数据提供者。
当有人向datagrid添加项目时,它会保存到同一个xml文件中。然后我关闭窗口,重新打开它,看不到已添加的项目。
它正在写入xml文件,因为当我重新启动flex应用程序时,该项目已被添加,它只是没有刷新它。我试图重新发送httpservice,但仍然没有运气。这样做的正确过程是什么?
答案 0 :(得分:1)
我的猜测是,在所有Flex和Flashplayer都使用浏览器作为基础之后,浏览器正在缓存文件。
在服务器端,您可以尝试设置无缓存标头 - 这取决于您的服务器。
在客户端,您可以执行各种操作:
答案 1 :(得分:0)
正如前面的回复中所提到的,最简单的解决方案是在进行HttpService调用之前简单地将伪随机http param附加到URL。 e.g。
var hs:HttpService = new HttpService();
hs.url = "http://myserver/files/myXml1.xml?t=" + new Date().getTime();
//attach listeners to hs
hs.send();
这样你就永远不会从浏览器中获取缓存的xml。 感谢。
答案 2 :(得分:0)
总是附加一个随机数来获取新的xml文件..
Atul yadav
答案 3 :(得分:0)
我同意在URL中放置一个随机参数。我只是在每次调用服务时(在结果处理程序中)递增一个变量,并将param嵌入到URL的末尾:
<mx:HTTPService id="getService"
url="http://serverpath/GetService.php?t={incNum}"
method="POST" resultFormat="xml"
result="getServiceResult(event)" fault="getServiceFault(event)" useProxy="false"/>
...
...
[Bindable]
private var incNum:int;
public function doInc():void :
incNum++;
}
private function getServiceResult(e:Event):void {
// get XML and disperse it to the UI
doInc();
}
private function getServiceFault(e:Event):void {
// report error codes, and fail gracefully
}
因此,对于每个服务调用,您可以在正结果上增加此数字。 (你也可以在故障结果上执行此操作,具体取决于你想要如何构建事物。)这将保证浏览器始终必须对数据库进行全新的非缓存调用,并检索新保存的数据你的用户界面。