2013-07-25 3 views
1

Я реализую функции выхода для веб-приложения. У меня есть функция, которая вызывается, когда пользователь нажимает кнопку выхода.302 Перенаправление с AJAX после запроса:

$.post(window.location.pathname + '/logout'); 

Служба выхода из системы работает только с почтой.

Что происходит:

  1. статус 302 возвращается как ожидается, с Адрес: http://myapp.com/logout.html
  2. Видимо Аякса вызова JQuery просто выбирает оттуда и сразу же делает запрос GET для указанного места.
  3. запрос GET возвращает правильный HTML, но он возвращает его AJAX стиль страницы переадресации не загружается браузером

То, что я хотел бы случиться:

  1. 302 Статус возвращается как ожидается, с Местоположение: http://myapp.com/logout.html
  2. браузер перенаправляет на данном месте
+0

Это не может быть сделано, [в соответствии с спецификацией] (http://www.w3.org/TR/XMLHttpRequest/#infrastructure-for-the-send() -метод): «Если ответ имеет код состояния HTTP '302': 1) Установите URL-адрес запроса на URL-адрес, переданный заголовком' Location'. 2) ... * прозрачно * следуйте за перенаправлением ... "Спецификация не позволяет клиентским скриптам чтобы заметить, что произошло перенаправление. - В любом случае, почему вы ожидаете, что Ajax-запрос всегда будет перенаправлять страницу? Если вы получили ответ «200 OK», вы не ожидали, что страница перейдет к ответу Ajax, не так ли? – apsillers

+0

Спасибо, что разъяснил мне эту проблему, я подозревал, что это было причиной. – jakee

ответ

4

Если вы не хотите обрабатывать ответ с использованием Ajax, то не используйте Ajax.

<form action="/logout" method="post"> 
    <input type="submit" value="logout"> 
</form> 
+0

Это так просто ... – Bart

+0

Умное обходное решение, я попробую это завтра! – jakee

+0

'$ ('

') .submit(); 'это работало как шарм, спасибо! – jakee

Смежные вопросы