用ajax写了一个查询重复用户名的代码,在onkeyup的调用,在查询数据库的方法里写了打印语句,只在第一次查询的时候打印了,如果第二次用同样条件查询的话就不会再执行java代码了,就是数据库的更新不能同步了,我用的是hibernate查询数据库,会不会是缓存问题

解决方案 »

  1.   

    在URL后面在加个随机数,试试,比如  http://你请求的url&andom=sss
      

  2.   

    你配置了二级缓存没有啊?用load查询会先检查一级缓存、二级缓存中是否存在要查询的数据,存在就不会去数据库中查询了。用get就不会去二级缓存中找。
      

  3.   

    没有配置, 用list得的数据,list方法是默认用load查询的吧,不配置二级缓存不是应该不查缓存的嘛
      

  4.   

    恩 是浏览器缓存的问题
    因为已经在页面上加了清空缓存的,还以为是hibernate的缓存问题
    原来是ajax缓存问题谢谢大家了
      

  5.   

    可能是浏览器的缓存,在你页面的head里加入
    <meta   http-equiv="Cache-Control" content="no-cache">     
    <meta   http-equiv="expires" content="0">   
    <meta   http-equiv="Pragma" content="no-cache">   
    <meta   http-equiv="Refresh"> 
    试试
      

  6.   

    页面如果有的话应该是找得到的,但如果你执行了一次,第二次再去执行如果地址与参数是一样的,那就不会再去执行了。               req.open("GET", "/pic/setphotoid.jsp?photoid=" + photoid+"&_dc="+new Date().getTime(), "false"); //可能存在缓存问题,当photoid一样时只会发起一次请求,加时间戳
                    req.send(null); 
                    alert(req.responseText); //==========这里直接输出在你后面的地址加上一个
    &_dc="+new Date().getTime(), 时间的参数!!就可以了
      

  7.   

    这个加过了,对ajax不起作用,我现在在action的方法里加了response.setHeader("Cache-Control", "no-cache");清缓存
    加时间戳和随机数也是不错的解决办法~谢了~结贴了