做了个验证码功能,需要做个点击改变验证码图片的功能,使用js改变img的src,代码如下
$("#cerificationCodeImg").attr("src","common/image.jsp");
image.jsp是用来生成验证码图片的,chrome下没有问题,IE下图片没有刷新,FF下也没有。搜索答案,在stackoverflow上找到了答案。链接如下:Dynamically change image src using Jquery not working in IE and firefox
原回答如下:
IE caching all GET request, so add a timestamp to your request URL e.g :
$(".linkEmail").click(function () { //Load captcha image $('.imgCaptcha').attr('src', '/Custom/AppCode/Utilities/CaptchaGenerator.ashx?'+new Date().getTime()); $('#emailModal').modal(); });
大意是IE下会缓存什么的云云,不必深究,在后面把时间传进去就OK了,那我的js代码就相应改成了
$("#cerificationCodeImg").attr("src","common/image.jsp?"+new Date().getTime());
OK,在IE和FF都正常工作了。
补记:后来一位同学碰到类似的问题,但他的情况并不是去请求页面,只是用js动态的改变图片的src,src是直接用的静态图片,虽然服务器的图片已改,但是前台依旧显示旧图片,使用上面说的方法可以解决问题。套样上面的代码就是:
$("#cerificationCodeImg").attr("src","common/image.jpg?"+new Date().getTime());
其实jsp页面和静态图片都属于url资源,据此推测,加timestamp的方法适用于任何使用url访问的资源缓存问题。