我在通過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