2009/06/24

AJAX XMLHttpRequest cache IE上不會重新request

今天寫了一支AJAX程式
平常都用Firefox在跑完全沒問題
今天用IE測了一下怎麼會出來的結果跟第一次都一樣
程式改了又改
測了又測
花了將近一個下午還是找不到問題
最後還是拜求Google大神
原來是IE會把XMLHttpRequest存在cache裡
只要用GET的方法,參數列都一樣
執行時都是跑出第一次的結果
查到了大致上有以下三種解法
1.將參數列加上時間或亂數
var url = "Page?dateTime=" + new Date().getTime();

此方法會產生一堆cache
不建議使用

2.利用POST的方式open
var url = "Page?xxx;

XMLHttpReq.open("GET", url, true); > XMLHttpReq.open("POST", url, true);

3.取消cache
JSP寫法:
response.addHeader("Cache-Control", "no-cache");

其他語言的寫法上網找一下就有了
注意這是要加在"被open"的頁面
加在open別人的頁面是沒有用的

方法2和3其實都可行
擇一服用藥到病除

寫程式=Debug無窮迴圈

沒有留言:

張貼留言