【问题标题】:Browser opens JSON response as a file浏览器将 JSON 响应作为文件打开
【发布时间】:2011-08-31 11:41:28
【问题描述】:

我有一些 jQuery 很好:

$.ajax({
    url: actionUrl,
    type: "POST",
    data: data,
    dataType: "json",
    success: function (data) {
        alert(data)
    }
});

但是,浏览器不处理数据,而是尝试打开文件。为什么?

我猜测响应的 MIME 类型有什么问题,但它在代码的其他地方工作得很好。

【问题讨论】:

标签: jquery json mime-types


【解决方案1】:

您能否在 actionUrl 中提供链接?还是那是私人的?

您提供的代码完全正确,因此问题一定是服务器为返回流返回了错误的标头。 响应头应该是 text/json。如果它的格式是:“application/..”那将是不正确的。

您可以通过 fiddler、poster (firefox addon)、firebug (firefox addon)、chrome developer view 等工具查看该 url 的返回标头。

你能检查并报告吗?

【讨论】:

  • 应该是application/json。请参阅我对这个问题的评论。根据 RFC 4627:“JSON 可以使用 UTF-8、UTF-16 或 UTF-32 表示。当 JSON 以 UTF-8 编写时,JSON 是 8 位兼容的。当 JSON 以 UTF-16 或 UTF-32 编写时,必须使用二进制内容传输编码。”因为它不是总是text,它被撞到application
  • 没错,我认为他只会使用普通的 utf-8 编码。感谢您的详细解释。
【解决方案2】:

试试

  $.ajax({
        url: actionUrl,
        type: "POST",
        data: data,
        contentType:'application/json charset=utf-8',
        dataType: "json",
        success: function (data) {
            alert(data)
        }
    });

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-06-25
    • 2016-04-25
    • 2014-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多