img的src属性设置从后台方法获取图片资源,不起作用?

编程南山下 2017-03-23 09:16:54
1.前台的jsp页面设置一张图片和对应按钮如下:
<img src="${pageContext.request.contextPath}/user/captcha-image.do" id="kaptchaImage" class="img-sty"/>
<button type="button" class="btn btn-md btn-warning change" onclick="changeCode()">换一张</button>
2.按钮的点击事件,JavaScript函数如下:
function changeCode() { //刷新
$('#kaptchaImage').removeAttr("src");
$('#kaptchaImage').hide().attr('src', contextPath+'/user/captcha-image.do').fadeIn();
}
3.'/user/captcha-image.do'对应的后台方法如下:
	
@RequestMapping("/captcha-image")
public ModelAndView getKaptchaImage(HttpServletRequest request, HttpServletResponse response) throws Exception {
/*设置返回头信息,内容类型为图片*/
response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
response.setHeader("Pragma", "no-cache");
response.setContentType("image/jpeg");
/*产生验证码,并设置在session中*/
String capText = captchaProducer.createText();
request.getSession().setAttribute(Constants.KAPTCHA_SESSION_KEY, capText);
/*产生验证码图片,并返回给前端*/
BufferedImage bi = captchaProducer.createImage(capText);
ServletOutputStream out = response.getOutputStream();
ImageIO.write(bi, "jpg", out);
try {
out.flush();
} finally {
out.close();
}
return null;
}


问题来了,为什么每次刷新页面的时候,验证码都可以正常更换。
但是点【换一张】那个按钮的时候,验证码却不会变化?
更奇怪的是,如果连续快速点击【换一张】的时候,验证码就会变化了。
真是头疼啊,望大神指点迷津
...全文
3117 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kse_music 2017-03-24
  • 打赏
  • 举报
回复
如同https://www.oschina.net/question/3134296_2235888
jio可 2017-03-24
  • 打赏
  • 举报
回复
不加时间戳就永远是一样的,因为路径一样
编程南山下 2017-03-24
  • 打赏
  • 举报
回复
经得一大神指点,已解决,方法如下: $('#kaptchaImage').hide().attr('src', contextPath+'/user/captcha-image.do?'+new Date().getTime()).fadeIn(); 加时间戳,防止缓存。
二月十六 2017-03-23
  • 打赏
  • 举报
回复
审查元素看看,src里是啥

87,993

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧