Как предотвратить 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; }
});
Ответы
Ответ 1
Это не ограничение с jQuery, но с самим JavaScript; нет способа обнаружить перенаправление в запросе AJAX в JavaScript; объекты XHR браузера автоматически-магически и невидимо следуют за перенаправлениями по спецификации.
Идеальным вариантом было бы добавить улов в код сервера в для обнаружения запроса AJAX (заголовок HTTP_X_REQUESTED_WITH) и вернуть специальный ответ для обнаружения анонимный пользователь в вашем JavaScript, и обработайте его соответствующим образом.