Аякс вызов сервлета пазл - PullRequest
       5

Аякс вызов сервлета пазл

1 голос
/ 18 февраля 2010

Привет!

У меня проблема с получением текстового значения капчи из сервлета через вызов ajax.

Когда моя капча создается, ее текстовое значение записывается в сеанс, но после обновления самого изображения посредством вызова 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();

Ответы [ 4 ]

1 голос
/ 18 февраля 2010

Пусть сервлет отправит следующие заголовки:

response.setDateHeader("Expires", 0);
response.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
response.setHeader("Pragma", "no-cache");
0 голосов
/ 26 марта 2010

В соответствии с комментариями к вопросу, вот копия комментария, который необходимо отправить в ответ:

Используете ли вы сторонний API-интерфейс captcha или доморощенный? Если третья сторона, какая? Вы также уверены, что они все используют один и тот же сеанс? Отладка / печать session.getId() в сервлете изображения и капчи. Вы уверены, что сервлет капчи был вызван? Отладка метода doGet().

0 голосов
/ 19 февраля 2010

... отчет о проделанной работе:

- идентификатор сеанса:

Оба метода, вызываемые на сервере, печатают один и тот же Си.загрузка страницы и последующие перезагрузки страницы Они оба печатают одно и то же текстовое значение капчи.

... вот что-то интересное.Когда я перезагружаю только изображение через вызов ajax, изображение перезагружается, но метод не выводится на консоль.

Метод, который должен получить текстовое значение, печатает на консоли старое значение

Итак, изображение перезагружается, но на консоль ничего не выводится, и текстовое значение печатается, но оно старое.

Когда я смотрю на вызов ajax в FireBug, что именно я ищу?(Боюсь, это мое самое слабое место)

... хм ...

0 голосов
/ 18 февраля 2010

Похоже, вам нужно добавить расширение файла к вашему URL. Предполагая, что это html-страница, вы делаете вызов ajax:

$.ajax({
    url:"checkCaptcha.html",
    type:"GET",
    cache: false,
    success: function( data) {
        alert(data);
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...