Что делать, если таргетинг URL не возвращается - PullRequest
0 голосов
/ 23 марта 2011

Это пример кода, который я использую для перехода по URL с фиксированным интервалом времени.

$(document).ready(function() {
    var counter = 1;

    $.doTimeout( 1000, function() {
        $.ajax({
            type: "GET",
            url: "<%=encodeUrl%>",
            timeout: 10000,
            dataType: "text",

            complete: function(resp) {
                if (resp.status == 200) {
                    $("#msg").html(counter++);
                } else {
                    $("#msg").html("Failed");
                    return true;
                }
            }
        });
    });
});

Целевой URL - это сервлет, который перенаправляет элемент управления на другую JSP.Согласно моему пониманию, я должен быть перенаправлен на новую страницу.Но он показывает ту же страницу со значением счетчика 1. Значит, перенаправление с целевого сервлета не работает.И ответ возвращается на ту же страницу.

Ответы [ 3 ]

2 голосов
/ 23 марта 2011

Если ваш ответ AJAX представляет собой перенаправление на другую страницу, перенаправленная страница будет выбрана как ответ на ваш запрос AJAX, поэтому вы получаете только 200 в качестве статуса HTTP.

Вы не можете обрабатывать перенаправления на основе кодов статуса HTTP, которые вы получаете с AJAX.

Ответ AJAX не может перенаправить вас на другую страницу, если вы не запрограммируете его на это.

Поэтому, если вы хотите перенаправить на основе вашего ответа AJAX, вам следует изменить код на стороне сервера, чтобы он отправлял вам URL-адрес перенаправления в качестве ответа, а не перенаправления.

См. один из ответов с примером решения

0 голосов
/ 23 марта 2011

Код делает именно то, что написано. Вы запускаете ajax-вызов, и в ответе 200 вы устанавливаете счетчик как html для #msg. В коде нет ничего, что заставило бы вас перенаправить на New Page.

Вам не нужен ajax здесь, если вы хотите перенаправить. Иначе, если ваше перенаправление основано на ответе, возвращенном сервлетом, перехватите его в complete и установите window.location.href = 'your/redirect/url/' для загрузки новой страницы.

0 голосов
/ 23 марта 2011

AJAX не предназначен для перенаправления.Эти заголовки не выполняются вашим браузером, что позволяет вам оставаться на этой странице!Какой точный код возвращает ваш сервлет?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...