使用jQuery的$.getJSON函数似乎是做了缓存处理,比如struts中有一个action是输出的json格式的数据,action路径是getsyncpath:
function getResult(){ $.getJSON( getsyncpath,null,function call(data){ var flag_sync = data.result; alert(flag_sync); if(flag_sync == true) { $("#waitdiv").hide(); $("#main").show('slow'); }else { setTimeout(function() { getResult() }, interval_getSyncflag); } }); }
这里不管是用循环还是setTimeout 还是setInterval getResult函数都只执行一次,alert(flag_sync) 每次都会弹出,但是不执行getsyncpath 里的 action,在action中跟踪输出可以看出action根本没有被调用,即使数据库的数值变化了jQuery也不调用action。只有在另外一张网页直接打开getsyncpath 的json输出并且刷新输出 这里的网页才会再次调用action。
解决办法:在getsyncpath 连接后面加上一个时间戳,加一个参数&time=new Date();这样每次生成的链接都不同了,就避免了缓存的情况。