JSON 内容类型有许多“标准 ” :

application/json
application/x-javascript
text/javascript
text/x-javascript
text/x-json

我用哪一种,在哪里?我假设安全和浏览器支持问题是一个因素。

相关:如果JSON被REST API送回,什么MIME类型?


当前回答

我用下面的用法

contentType: 'application/json',
data: JSON.stringify(SendData),

其他回答

这取决于观点。

如果您是发送请求书的客户,那么申请/json就是正确的选择。

但如果您是收到请求的服务器, 您必须做好准备, 客户端也可以发送编码。 因此应用程序/ json 和 应用程序/ json; 字符set=utf-8 是有效的 。

两种情况下媒体类型相同。 但内容类型不同 。

并非所有内容类型应用程序/json都有效。

如果您正在使用 Ext JS 表格提交到上传文件, 请注意, 服务器响应由浏览器解析, 以创建 < iframe > 的文档 。

如果服务器正在使用 JSON 发送返回对象, 则内容- 类型页眉必须设置为文本/ html , 以便告诉浏览器将文本插入文档正文, 未改变 。

见Ext JS 3.4.0 API文件。

“申请/json”是JSON正确的内容类型。

def ajaxFindSystems = {
  def result = Systems.list()
  render(contentType:'application/json') {
    results {
      result.each{sys->
        system(id:sys.id, name:sys.name)
      }
    }
    resultset (rows:result.size())
  }
}

只有在使用应用/json作为MIME类型时(截至2011年11月,有最新版本的Chrome、Firefox和Firebug),我才具备以下条件:

当 JSON 从服务器上装入时, Chrome 不再发出警告 。 Firebug 会在回复中添加一个标签, 显示您格式化的 JSON 数据。 如果 MIME 类型不同, 它会显示为“ 响应内容 ” 。

JSON的正确内容类型是应用程序/json UnLESS, 您正在使用JSONP, 也称为JSON with Padding, 实际上是 JavaScript, 所以正确的内容类型将是应用程序/javascript。