【发布时间】:2010-02-25 17:10:45
【问题描述】:
可能很明显,但我仍然缺乏基本知识。
所以在控制器内部,两者都可以使用,还是总是 Javascript,所以两者都是一样的?
【问题讨论】:
-
我相信两者都可以使用,因为它们是独立的 MIME 类型。为什么不试试看呢?
标签: javascript ruby-on-rails json
可能很明显,但我仍然缺乏基本知识。
所以在控制器内部,两者都可以使用,还是总是 Javascript,所以两者都是一样的?
【问题讨论】:
标签: javascript ruby-on-rails json
json 和 js 是两种不同类型的响应,它们在 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 调用。
【讨论】:
在 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"}]
【讨论】: