Mam łącze, które wywołuje Ajax POST, aby wykonać akcję. Jeśli użytkownik nie jest jeszcze zalogowany, metoda działania zwraca przekierowanie 302 na stronę logowania. Jeśli tak się stanie, chcę przechwycić przekierowanie, dzięki czemu mogę wyświetlić formularz logowania w lightboxie.Jak uniemożliwić jQuery ajax śledzenie przekierowania po poście?
Wygląda jednak na to, że jQuery śledzi przekierowanie bez zwracania kontroli lub wywoływania funkcji zwrotnej. W poniższym kodzie alert przekierowania 302 nigdy nie jest wywoływany, a do czasu wywołania funkcji dataFiler dane są zawartością strony logowania.
Jak mogę zobaczyć, że strona wysłała przekierowanie 302 i rozgałęziła się na inną akcję?
$.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; }
});