我在通过ajax调用从servlet获取验证码的文本值时遇到问题。
当我的验证码被创建时,它的文本值被写入会话,但通过ajax调用刷新图像本身后,我只获得一个旧的文本值。
刷新图像本身工作正常,但我坚持从后续调用的会话中获取正确的值。
在页面重新加载时,我得到了新图像及其新文本值,但没有使用ajax的喜悦。
这对于图像刷新的伟大工程:
$("#asos").attr("src", "/ImageServlet?="+((new Date()).getTime()))
这调用另外一个方法来获取文本值给了我旧的东西:
$.ajax({
url:"checkCaptcha",
type:"GET",
cache: false,
success: function(data) {
alert(data);
}
});
任何反馈将不胜感激。
PS:这里的方法得到调用的肉:
PrintWriter out = response.getWriter();
response.setContentType("text/html");
response.setDateHeader("Expires", 0);
// Set standard HTTP/1.1 no-cache headers.
response.setHeader("Cache-Control", "no-store, no-cache, must-revalidate");
// Set IE extended HTTP/1.1 no-cache headers (use addHeader).
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
// Set standard HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
out.print(request.getSession().getAttribute("randomPixValue"));
out.close();
使用FireBug检查现场背后发生的事情 – Bozho 2010-02-18 13:31:28
您使用的是第三方的captcha API还是本地的?如果第三方,哪一个?你是否也确定他们都使用同一个会话?在图像和captcha servlet中调试/打印'session.getId()'。你确定captcha servlet被叫了吗?调试'doGet()'方法。 – BalusC 2010-02-18 14:31:12
...这是一个小而简单的家庭成员。稍后会检查其余的,忘记提交最新版本今天早上:-( – vector 2010-02-18 14:57:01