IE想从Django下载返回的JSON

Ale*_*uhl 4 django ajax

我有一个Django站点,其中一个页面正在进行基于AJAX的文件上传(使用Valum的文件上传器),它通过JSON返回一些信息.Django返回JSON的方式是......

return HttpResponse( json.dumps( info ), mimetype="application/json" )
Run Code Online (Sandbox Code Playgroud)

在Firefox,Chrome和Safari中尝试页面时,我会获得文件上传器的相应行为,标记上传完成并将数据插入页面上的表格中.

在IE8中进行测试后,我在Django发回JSON后得到了错误的行为:出现了一个下载对话框 - 如果保存它就是JSON文本 - 并且文件上传者继续认为文件正在上传,因为它没有收到任何响应从服务器.IE必须看到响应并将其解释为下载而不是将其传递给页面的javscript.请注意,我已经尝试将mime更改为application/javascript,这似乎没有任何区别.有人得到了修复?

dda*_*ngo 10

IE存在来自iframe的"application/json"响应问题.

虽然我不知道Django的细节,但我可以从其他框架的经验中说,解决这个问题的最简单方法之一是将响应作为"text/html"返回,然后将该字符串解析为JSON.在这种情况下,我猜它就像将响应更改为:

return HttpResponse( json.dumps( info ), mimetype="text/html" )
Run Code Online (Sandbox Code Playgroud)

然后解析你喜欢的任何框架的响应(无论是原生的JSON.parse还是jQuery.parse等).

应仅针对您是ajax上传文件的情况进行本地化(就像您在这里一样).