代码之家  ›  专栏  ›  技术社区  ›  Soviut

当通过AJAX发送重定向响应时,如何防止浏览器重定向?

  •  2
  • Soviut  · 技术社区  · 14 年前

    我正在尝试使用Django(1.4.2)对Django联系人表单应用程序进行AJAX通知。我想让Django做繁重的工作,当涉及到验证和模板呈现,这样我可以保持我的模板一致性和服务器端。因此,我将返回“部分”模板呈现,以便在用户提交表单时注入DOM。

    几乎 作品;表单提交、部分模板呈现并返回、显示验证错误等。但是,一旦表单有效,contact\表单的视图将执行http重定向。我已经定好了 success_url 只是 已发送邮件的url。

    我希望它在服务器上重定向,返回发送的消息并用它替换表单。然而,这 只有 在铬合金中工作正常。在Firefox和IE中,整个浏览器重定向到我发送的消息url。

    有没有办法让重定向到 影响AJAX响应而不重定向整个浏览器?

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    4 年前

    这是不可能的。FF和IE的行为符合W3规范。

    W3 XMLHttpRequest specification :

    4.6.4. Infrastructure for the send() method

    HTTP重定向基本上指示客户端向给定位置发出一个全新的HTTPGET请求。你最好的办法是 服务器端 包括 到所需的资源。

    或者,您也可以让它返回一些JSON,这些JSON应该在某个回调函数中通知jQuery代码,它应该在JSON返回的URL上重新触发一个新的ajaxical请求。

    Not in this Specification

    • 属性以禁用以下重定向;