Как запретить браузеру перенаправлять при отправке ответа перенаправления через AJAX? - PullRequest
2 голосов
/ 10 июля 2010

Я пытаюсь AJAX-ify приложение contact_form Django, используя Django (1.4.2).Я хочу позволить Django выполнять тяжелую работу, когда дело доходит до проверки и рендеринга шаблонов, чтобы я мог сохранять свои шаблоны согласованными и на стороне сервера.Поэтому я возвращаю «частичные» визуализации шаблона для внедрения в DOM, когда пользователь отправляет форму.

Это почти работает;Форма отправляется, частичный шаблон отображается и возвращается, отображаются ошибки проверки и т. Д. Однако, после того как форма верна, представление contact_form выполняет перенаправление http.Я установил success_url для перенаправления на , просто URL отправленного сообщения.

Я ожидал, что оно перенаправит на сервер, вернет отправленное сообщение и заменит форму на него.Однако этот только работал правильно в Chrome.В Firefox и IE весь браузер перенаправляет на URL отправленного сообщения.

Можно ли как-нибудь перенаправить на только , чтобы повлиять на ответ AJAX и не перенаправить весь браузер?

1 Ответ

2 голосов
/ 10 июля 2010

Это пока невозможно.FF и IE ведут себя правильно согласно спецификации W3.

Вот выдержка из главы 4.6.4 спецификации W3 XMLHttpRequest :

4.6.4.Инфраструктура для метода send ()

Перенаправление HTTP в основном предписывает клиентской стороне запустить новый запрос HTTP GET в указанное местоположение.Лучше всего вместо этого сделать на стороне сервера , включая или пересылку на нужный ресурс.

В качестве альтернативы вы также можете разрешить его вместовернуть некоторый JSON, который должен уведомить ваш код jQuery в некоторой функции обратного вызова, что он должен перезапустить новый аяксический запрос по URL, возвращенный JSON.

Однако в будущем планируется добавить свойство для отключения следующегоперенаправляет.Вот еще одна выдержка:

Не в этой спецификации

Эта спецификация не включает в себя следующие функции, которые рассматриваются для будущей версии этой спецификации:

  • Свойство для отключения следующих перенаправлений;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...