今天做一個密碼初始化的功能,不想初始化了在返回原來頁面,于是就用ajax實現,初始化頁面包括一個生成隨機密碼的函數,當點擊“初始化密碼”的時候,可以得到返回的密碼,但是當點擊第二次,第三次,都是第一次返回的那個密碼。而且數據庫也不更新了。
于是就到百度上搜索,結果找到是ajax和緩存的問題.
我只用了2(或者3)解決了問題,其他的沒有試驗,如果大家碰到類似的問題可以試一試,網上推薦用2或者3解決,原因就是簡單吧。
搜索到的解決辦法:
1、在服務端加 header("Cache-Control: no-cache, must-revalidate");
2、在ajax發送請求前加上 xmlHttp.setRequestHeader("If-Modified-Since","0");
3、在ajax發送請求前加上 xmlHttp.setRequestHeader("Cache-Control","no-cache");
對于2和3也就是這樣實現:
function changepass(upass) {
createXMLHttpRequest();
var url = "cpass.asp?uid=" + upass ;
xmlHttp.open("GET", url, true);
xmlHttp.onreadystatechange = callback;
xmlHttp.setRequestHeader("If-Modified-Since","0");//清楚ie緩存------>2
//xmlHttp.setRequestHeader("Cache-Control","no-cache");//清楚ie緩存------->3
xmlHttp.send(null);
}
4、在 Ajax 的 URL 參數后加上 "?fresh=" + Math.random(); //當然這里參數 fresh 可以任意取了
5、第五種方法和第四種類似,在 URL 參數后加上 "?timestamp=" + new Date().getTime();
6、用POST替代GET:不推薦
新聞熱點
疑難解答
圖片精選