【问题标题】:Rails: format.js or format.json, or both?Rails:format.js 或 format.json,或两者兼而有之?
【发布时间】:2010-02-25 17:10:45
【问题描述】:

可能很明显,但我仍然缺乏基本知识。

所以在控制器内部,两者都可以使用,还是总是 Javascript,所以两者都是一样的?

【问题讨论】:

  • 我相信两者都可以使用,因为它们是独立的 MIME 类型。为什么不试试看呢?

标签: javascript ruby-on-rails json


【解决方案1】:

jsonjs 是两种不同类型的响应,它们在 Rails 中被定义为不同的 MIME 类型

Mime::Type.register "text/javascript", :js, %w( application/javascript application/x-javascript )
Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest )

即使可以将 Json 视为 JavaScript 的子集,但并非所有 JavaScript 响应实际上都是 Json 响应。

您可能希望在同一操作中使用 Json 和 Js 进行响应。

例如,您可能有一个动作,它用 Json 响应 API 调用,用 JavaScript(可能使用 RJS)响应内部 Ajax 调用。

【讨论】:

    【解决方案2】:

    在 Rails 3.1 中,我能发现的唯一区别是 if 格式化程序是 js,然后答案以纯文本形式发送。如果是 json 则编码为 json。

    如果格式.json

    format.json {
      render :json => @accounts.map(&:attributes)
    }
    

    服务器发送:

    data:application/json;base64,
    

    如果格式.js

    format.js {
      render :json => @accounts.map(&:attributes)
    }
    

    服务器发送:

    [{"id":33,"email":"user1@example.com"}]
    

    【讨论】:

      猜你喜欢
      • 2011-06-17
      • 2015-10-14
      • 2017-12-28
      • 1970-01-01
      • 2018-12-01
      • 2020-02-04
      • 1970-01-01
      • 1970-01-01
      • 2010-12-17
      相关资源
      最近更新 更多