使用js写的刷新操作第一次运行可以,以后就不执行了,为什么?
functionhttpSettingC(){if(xmlHttp.readyState==4){if(xmlHttp.status==200||xmlHttp.stat...
function httpSettingC(){
if (xmlHttp.readyState==4){
if (xmlHttp.status==200||xmlHttp.status==0){
window.location.href("update_classify.jsp");
}
}
}
function cchange(){
createObject();
e = arguments[0]||window.event;
src = e.srcElement||e.target;
var url="update_classify_change.jsp?change="+src.value;
xmlHttp.open("get",url,true);
xmlHttp.onreadystatechange=httpSettingC;
xmlHttp.send(null);
}
说明:页面上有一个按钮,onclick="cchange()",update_classify_change.jsp用于更新数据库信息,httpSettingC处理返回结果(其实无返回值),刷新页面。
第一次运行时,数据库更新了,页面也刷新了
再运行,数据库更新,但页面不再更新了。
试了两个浏览器,都是这样...
这是为什么呢? 展开
if (xmlHttp.readyState==4){
if (xmlHttp.status==200||xmlHttp.status==0){
window.location.href("update_classify.jsp");
}
}
}
function cchange(){
createObject();
e = arguments[0]||window.event;
src = e.srcElement||e.target;
var url="update_classify_change.jsp?change="+src.value;
xmlHttp.open("get",url,true);
xmlHttp.onreadystatechange=httpSettingC;
xmlHttp.send(null);
}
说明:页面上有一个按钮,onclick="cchange()",update_classify_change.jsp用于更新数据库信息,httpSettingC处理返回结果(其实无返回值),刷新页面。
第一次运行时,数据库更新了,页面也刷新了
再运行,数据库更新,但页面不再更新了。
试了两个浏览器,都是这样...
这是为什么呢? 展开
4个回答
展开全部
太明显是缓存的问题了 ajax这个缓存问题解决起来也非常方便。
解决的办法就是你请求的URL地址的时候加个时间就好 ,浏览器的机制就是这样 。打个最简单的比方。你开第一网站 第一次可能是很慢的。当你开完了 在你没有清除缓存的时候你再开这个网站你就会快很多 因为这个网站的图片 css js文件这些已经缓存在你的机上了。你并没有去服务器重新接收 。
你ajax一个url请求也是同样的道理 你如果第一次请求的url是update_classify_change.jsp的话 那你下次就要加个时间 可以是
var oDate = new Date();
var getTime = oDate.getTime() ;
var url = "update_classify_change.jsp?time=" +getTime;
这样浏览器就不会缓存你的东西 因为他会认为你每次请求的东西都是不一样的。从而就不会给缓存。
解决的办法就是你请求的URL地址的时候加个时间就好 ,浏览器的机制就是这样 。打个最简单的比方。你开第一网站 第一次可能是很慢的。当你开完了 在你没有清除缓存的时候你再开这个网站你就会快很多 因为这个网站的图片 css js文件这些已经缓存在你的机上了。你并没有去服务器重新接收 。
你ajax一个url请求也是同样的道理 你如果第一次请求的url是update_classify_change.jsp的话 那你下次就要加个时间 可以是
var oDate = new Date();
var getTime = oDate.getTime() ;
var url = "update_classify_change.jsp?time=" +getTime;
这样浏览器就不会缓存你的东西 因为他会认为你每次请求的东西都是不一样的。从而就不会给缓存。
展开全部
可能和浏览器的缓存有关,再次运行时你可以先清除缓存,因为浏览器记录缓存后的status可能会变成304,或者你可以用chrome调试下
追问
那怎么解决呢?
追答
可以去百度搜下禁止缓存的方法
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主上面的update_classify_change.jsp和代码所在页面是一个页面么
createObject();这个是创建ajax对象的么
xmlHttp这个是ajax吧,为什么没看到怎么实例出来的,或是在其他地方创建出来的
楼主可以在火狐浏览器下调出firebug查看ajax返回的数据调试
createObject();这个是创建ajax对象的么
xmlHttp这个是ajax吧,为什么没看到怎么实例出来的,或是在其他地方创建出来的
楼主可以在火狐浏览器下调出firebug查看ajax返回的数据调试
来自:求助得到的回答
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是因为异步调用的原因
追问
能具体说下吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询