私のdjangoアプリでは、テンプレートをレンダリングし、ブラウザの名前を付けて保存を呼び出したいと思っています。私は ajax を使用してこれを実装しました。テンプレートをレンダリングするビューがあります。そのテンプレートには、ajax を使用して別のビューを呼び出す JavaScript があります。そのビューは、名前を付けて保存をトリガーする応答を返します。しかし、ajax で呼び出されたビューから返された場合はそうではありません。ajax呼び出しによって生成されたURLをブラウザのアドレスバーにカットアンドペーストして同じビューを呼び出すと、名前を付けて保存が呼び出されますが、ajaxから呼び出された場合はそうではありません。ビューが呼び出され、適切な応答が返されていることを pdb を使用して Python 側から確認しました。応答を受信したことをブラウザ側から確認しました。
これは私が返す応答です (ブラウザのデバッグ ウィンドウから切り取って貼り付けます):
HTTP/1.1 200 OK
Date: Tue, 26 Mar 2013 13:07:47 GMT
Server: Apache/2.2.21 (Unix) mod_ssl/2.2.21 OpenSSL/1.0.0f DAV/2 mod_wsgi/3.3 Python/2.6.7
Vary: Cookie
Content-Disposition: Attachment; filename=SF69.xml
Keep-Alive: timeout=5, max=98
Connection: Keep-Alive
Transfer-Encoding: chunked
Content-Type: text/xml
なぜそれが起こっているのでしょうか?ajax から返された場合と「通常の」方法で返された場合の動作が異なるのはなぜですか?