我的登陆界面中有一个验证码,我在该验证码的后面定义了一个按钮,这个按钮用来刷新验证码,定义如下:
<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);
}; 现在我发现这个验证码无法刷新,大家帮帮我看看这个函数该怎么改,才能让验证码的域刷新一下,取得新的验证码,谢谢大家了
<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中加上放缓存语句 // 设置页面不缓存
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);2.调用validateCodeServlet时,后面加上参数,但服务端不作处理。
比如"validateCodeServlet?t="+new Date().valueOf()
这样来保证每次生成的请求不一样,浏览器就傻傻的认为是新东西,就重新下载
function refreshValidateCode() {
var _img = document.getElementById("validateCodeImage");
_img.src = "";
setTimeout(function(_img) {
return function() {
_img.src = "validateCodeServlet";
}
}, 10);
};