15

Вопрос по redirect, http, jquery – Как предотвратить использование jQuery ajax после перенаправления после публикации?

У меня есть ссылка, которая отправляет Ajax POST для выполнения действия. Если пользователь еще не вошел в систему, метод действия возвращает перенаправление 302 на страницу входа. Если это произойдет, я хочу поймать перенаправление, чтобы я мог отобразить форму входа в лайтбокс.

Однако, похоже, что jQuery следует за перенаправлением, не возвращая управление или не вызывая функцию обратного вызова. В приведенном ниже коде предупреждение о перенаправлении 302 никогда не вызывается, и к тому времени, когда вызывается функция dataFiler, данные являются содержимым страницы входа в систему.

Как я могу увидеть, что страница отправила перенаправление 302 и ответвление на другое действие?

 $.ajax(url,
        {
            data: postArguments,
            type : "POST",
            success: function (data) { alert(' success function'); },
            statusCode:
            {
                302: function () { alert(' received redirect 302'); },
                301: function () { alert(' received redirect 301'); }
            },
            dataFilter: function (data, type) { alert('got data ' + data); return data; }
        });
  • 12

    Это не ограничение для jQuery, а для самого JavaScript

    нет способа обнаружить перенаправление в AJAX-запросе в JavaScript; объекты браузера XHR автоматически и невидимо следуют перенаправлениям в соответствии сспецификация.

    Идеальный вариант - добавить уловку в коде вашего сервера вобнаружить запрос AJAX (заголовок & quot; HTTP_X_REQUESTED_WITH & quot;) и возвращает специальный ответ, чтобы обнаружить анонимного пользователя в вашем JavaScript, и обрабатывать его соответствующим образом.