假定${ctx}/images/VerificationCode.jpg为一个显示验证码的servlet
1、以前一直这样用
<img src="${ctx}/images/VerificationCode.jpg" alt="验证码,看不清楚,换一张"
onclick="this.src=this.src" />
但是在服务器对图片有缓存的情况下就无效了
2、受SpringSide的启发
http://wiki.springside.org.cn/display/SpringSide3/Captcha
变化一下,变成
<img src="${ctx}/images/VerificationCode.jpg" alt="验证码,看不清楚,换一张"
onclick="$(this).hide().attr('src',this.src + '?' + Math.floor(Math.random()*100)).fadeIn();" />
但是这个要使用jQuery插件,主要是加了个随机数,防缓存.但是要使用到jQuery插件.
3、朴素一点,去掉jQuery
<img src="${ctx}/images/VerificationCode.jpg" alt="验证码,看不清楚,换一张"
onclick="this.src = this.src + '?' + Math.floor(Math.random()*100))" />4、更简单一点
<img src="${ctx}/images/VerificationCode.jpg" alt="验证码,看不清楚,换一张"
onclick="this.src = this.src + '?' + new Date().getTime();" />
原理都是一样的,加随机数(随机数,或时间戳),去缓存。
本文介绍了几种解决浏览器缓存导致验证码无法更新的问题方法。通过在图片URL后添加随机数或时间戳来强制浏览器请求新的验证码图片,确保每次点击都能获取到最新的验证码。
1000

被折叠的 条评论
为什么被折叠?



