我的登陆界面中有一个验证码,我在该验证码的后面定义了一个按钮,这个按钮用来刷新验证码,定义如下:
<td><input name="validCode" type="text" class="loginCheckCodeTextField" id="textfield3">
            <img id="validateCodeImage" width="60" height="20" alt="验证码" src="validateCodeServlet" />
            <input name="button2" type="button" class="loginBtn" id="button2" class="loginBtn" value="看不清" onclick="refreshValidateCode();"></td>我的refreshValidateCode()函数定义如下:
 function refreshValidateCode(){
              var _img=document.getElementById("validateCodeImage");
              _img.src="";
              setTimeout(function(){     
              _img.src="validateCodeServlet";              
              },10);
           };         现在我发现这个验证码无法刷新,大家帮帮我看看这个函数该怎么改,才能让验证码的域刷新一下,取得新的验证码,谢谢大家了

解决方案 »

  1.   

    另外,我的validateCodeServlet肯定没问题,因为我每次刷新页面的时候都会载入新的验证码,但就是这个按钮不管用
      

  2.   

    这个验证码图片被缓存了,所以只显示一次
    解决办法有二
    1.validateCodeServlet中加上放缓存语句 // 设置页面不缓存
    response.setHeader("Pragma", "No-cache");
    response.setHeader("Cache-Control", "no-cache");
    response.setDateHeader("Expires", 0);2.调用validateCodeServlet时,后面加上参数,但服务端不作处理。
    比如"validateCodeServlet?t="+new Date().valueOf()
    这样来保证每次生成的请求不一样,浏览器就傻傻的认为是新东西,就重新下载
      

  3.   

    刚才看到了你改成如下试一试
      function refreshValidateCode() {
          var _img = document.getElementById("validateCodeImage");
          _img.src = "";
          setTimeout(function(_img) {
              return function() {
                  _img.src = "validateCodeServlet";
              }
          }, 10);
      };