Подтвердить что ты не робот

Как предотвратить 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; }
        });
4b9b3361

Ответ 1

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

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