我在刷新xml文件時遇到問題。我通過HTTP服務組件將其引入,並將其放入一個可綁定數組_cattArr中,該數組用作網格的數據提供者。通過Flex中的HTTPService刷新XML文件
當某人向數據網格添加項目時,它會保存到同一個xml文件中。然後關閉窗口,重新打開窗口,看不到添加的項目。
它寫入到xml文件,因爲當我重新啓動flex應用程序時,該項目已添加,它只是不刷新它。我試圖重新發送httpservice,但仍然沒有運氣。這樣做的正確過程是什麼?
我在刷新xml文件時遇到問題。我通過HTTP服務組件將其引入,並將其放入一個可綁定數組_cattArr中,該數組用作網格的數據提供者。通過Flex中的HTTPService刷新XML文件
當某人向數據網格添加項目時,它會保存到同一個xml文件中。然後關閉窗口,重新打開窗口,看不到添加的項目。
它寫入到xml文件,因爲當我重新啓動flex應用程序時,該項目已添加,它只是不刷新它。我試圖重新發送httpservice,但仍然沒有運氣。這樣做的正確過程是什麼?
我的猜測是瀏覽器正在緩存文件,畢竟Flex和Flashplayer都使用瀏覽器作爲基礎。
在服務器端,您可以嘗試設置無緩存頭 - 這取決於您的服務器。
在客戶端有你可以做各種事情:
正如前面的回覆中提到的,最簡單的解決方案是在進行HttpService調用之前,簡單地在URL中附加一個虛擬隨機http參數。例如
var hs:HttpService = new HttpService();
hs.url = "http://myserver/files/myXml1.xml?t=" + new Date().getTime();
//attach listeners to hs
hs.send();
這樣你就永遠不會從瀏覽器中獲得緩存的xml。 謝謝。
始終添加一個隨機數,以獲得新的XML文件..
阿圖爾·亞達夫
我同意隨機參數的時記入到URL。我只是每一個服務被稱爲(在結果處理)時增加一個變量,並嵌入帕拉姆到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
}
因此,對於每一個服務電話,你可以增加對正該號碼結果。 (你也可以根據你想要的結構來做到這一點)。這將保證瀏覽器總是不得不對數據庫進行新的非緩存調用,並檢索新保存的數據以供你的UI。
謝謝,所有這些答案的工作。 – pfunc 2010-04-22 16:20:31