今天做一個(gè)密碼初始化的功能,不想初始化了在返回原來頁面,于是就用ajax實(shí)現(xiàn),初始化頁面包括一個(gè)生成隨機(jī)密碼的函數(shù),當(dāng)點(diǎn)擊“初始化密碼”的時(shí)候,可以得到返回的密碼,但是當(dāng)點(diǎn)擊第二次,第三次,都是第一次返回的那個(gè)密碼。而且數(shù)據(jù)庫也不更新了。
于是就到百度上搜索,結(jié)果找到是ajax和緩存的問題.
我只用了2(或者3)解決了問題,其他的沒有試驗(yàn),如果大家碰到類似的問題可以試一試,網(wǎng)上推薦用2或者3解決,原因就是簡單吧。
搜索到的解決辦法:
1、在服務(wù)端加 header("Cache-Control: no-cache, must-revalidate");
2、在ajax發(fā)送請求前加上 xmlHttp.setRequestHeader("If-Modified-Since","0");
3、在ajax發(fā)送請求前加上 xmlHttp.setRequestHeader("Cache-Control","no-cache");
對于2和3也就是這樣實(shí)現(xiàn):
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 參數(shù)后加上 "?fresh=" + Math.random(); //當(dāng)然這里參數(shù) fresh 可以任意取了
5、第五種方法和第四種類似,在 URL 參數(shù)后加上 "?timestamp=" + new Date().getTime();
6、用POST替代GET:不推薦
新聞熱點(diǎn)
疑難解答
圖片精選