可能很明显,但我仍然缺乏基本知识。
所以内部控制器,既可以使用,也可以使用Javascript,所以两者都相同?
答案 0 :(得分:38)
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调用。
答案 1 :(得分:23)
在Rails 3.1中,我发现的唯一区别是if格式化程序是js,然后答案以纯文本形式发送。如果是json那么它被编码为json。
如果是format.json
format.json {
render :json => @accounts.map(&:attributes)
}
服务器发送:
data:application/json;base64,
如果是format.js
format.js {
render :json => @accounts.map(&:attributes)
}
服务器发送:
[{"id":33,"email":"user1@example.com"}]