【问题标题】:json xhr response opens a download file popup windowjson xhr 响应打开下载文件弹出窗口
【发布时间】:2010-11-07 12:57:22
【问题描述】:

对于我们的一个 ajax 请求(带有 .json 响应),我们的一些客户抱怨他们看到“文件下载”提示要求用户下载 .json 响应。我很困惑,因为考虑到这是一个 xhr 响应,这永远不会发生。有人见过吗?

谢谢

【问题讨论】:

  • 为什么要添加 .json 作为文件扩展名?我认为你不能这样做,除非你将浏览器设置为为 .json 文件做特定的事情(在 FF 中转到选项)

标签: json download prompt xmlhttprequest


【解决方案1】:

尝试在响应中指定 MIME 类型为“text/plain”。或者只是从 url 中删除“.json”扩展名(例如尝试 .txt 或 .js)

【讨论】:

  • 并确保在指定之前没有在代码中的其他任何地方设置标题(即,将 mime 类型指定为 text/plain 以外的其他内容)。
  • 此答案假定您可以控制响应。调用第三方 WS 响应 JSON,内容类型设置为,god forbids,json 怎么样?
  • 是的,将 ContentType 更改为 text/html(来自 application/json)对我有用。我写了一篇关于它的博客文章,其中包含更多细节:blog.degree.no/2012/09/…
【解决方案2】:

删除 .json 并将内容类型设置为 text/html。 IE 不知道你发送的是什么类型的文件,所以它提供下载。它知道如何处理 text/html :)

【讨论】:

    【解决方案3】:

    不确定您是否找到了解决方案,但我遇到了类似的问题,即 IE 尝试下载任何 JS 响应。要修复它,我必须确保 format.html 出现在响应块中的 format.js 上方:

    def index
    
      # ...
    
      respond_to do |format|
        # html must be above js, otherwise IE will try to download the JS
        format.html
        format.js
      end
    end
    

    希望这会有所帮助。

    【讨论】:

    • 这个解决方案对我有用。不知道为什么(其他浏览器运行良好)。
    • IE 接受标头:Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave-flash, */* Firefox 接受标头:Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 还不确定 q= 是什么意思,但我敢打赌它与它想要多少特定类型的内容有关。
    【解决方案4】:

    对于使用 ASP MVC 并在 IE 上遇到相同问题的人,在返回响应时使用此:

    return Json(result, "text/plain");
    

    编辑:标准类型是:“application/json”,但不适用于 IE。使用 text/html 是危险的。

    【讨论】:

    • 比@jrharshath 更好的答案,因为 text/plain 在技术上不正确。对于旧版本的 IE,这是一个严重的黑客攻击。
    【解决方案5】:

    我使用的是QQ ajax文件上传器,发现需要将内容类型设置为“text/json”才能正常工作。

    【讨论】:

    • 我试过了,但对我没有用。 IE7 尝试下载指定为端点的 php 文件。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多