项目有时要用一些
Ajax的效果,因为比较简单,也就没有去用什么
Ajax.net之类的东西,手写代码也就实现了。、
第二天,有人向我报告错误;说是只有第一次读取的值正常,后面的值都不正常;我调试了一下 ,确实有这样的问题,查出是因为 AJAX缓存的问题:解决办法有如下几种:
1、在服务端加 header("Cache-Control: no-cache, must-revalidate");(如php中)
2、在 ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0");
3、在 ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了
5、第五种方法和第四种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime();
6、用POST替代GET:不推荐
1、加个随机数
xmlHttp.open("GET", " ajax.asp?now=" + new Date().getTime(), true);
2、在要异步获取的asp页面中写一段禁止缓存的代码:
Response.Buffer =True
Response.ExpiresAbsolute =Now() - 1
Response.Expires=0
Response.CacheControl="no-cache"
3、在 ajax发送请求前加上xmlHTTP.setRequestHeader("If-Modified-Since","0");可以禁止缓存
xmlHTTP.open("get", URL, true);
xmlHTTP.onreadystatechange = callHTML;
xmlHTTP.setRequestHeader("If-Modified-Since","0");
xmlHTTP.send();
第二天,有人向我报告错误;说是只有第一次读取的值正常,后面的值都不正常;我调试了一下 ,确实有这样的问题,查出是因为 AJAX缓存的问题:解决办法有如下几种:
1、在服务端加 header("Cache-Control: no-cache, must-revalidate");(如php中)
2、在 ajax发送请求前加上 anyAjaxObj.setRequestHeader("If-Modified-Since","0");
3、在 ajax发送请求前加上 anyAjaxObj.setRequestHeader("Cache-Control","no-cache");
4、在 Ajax 的 URL 参数后加上 "?fresh=" + Math.random(); //当然这里参数 fresh 可以任意取了
5、第五种方法和第四种类似,在 URL 参数后加上 "?timestamp=" + new Date().getTime();
6、用POST替代GET:不推荐
1、加个随机数
xmlHttp.open("GET", " ajax.asp?now=" + new Date().getTime(), true);
2、在要异步获取的asp页面中写一段禁止缓存的代码:
Response.Buffer =True
Response.ExpiresAbsolute =Now() - 1
Response.Expires=0
Response.CacheControl="no-cache"
3、在 ajax发送请求前加上xmlHTTP.setRequestHeader("If-Modified-Since","0");可以禁止缓存
xmlHTTP.open("get", URL, true);
xmlHTTP.onreadystatechange = callHTML;
xmlHTTP.setRequestHeader("If-Modified-Since","0");
xmlHTTP.send();