Gab*_*ger 2 ruby jquery json ruby-on-rails coffeescript
我正在使用Rails 4构建一个Web应用程序,我偶然发现了Rails控制器和JQuery之间的一些奇怪的行为,我不确定是不是因为我做错了什么,或者是否真的误解了Rails通过JQuery返回JSON.请参阅以下咖啡脚本:
咖啡脚本:
$.get('/get_experiment', (data) ->
console.log 'Success:'
console.log JSON.parse data
).error (data) ->
console.log 'Failure:'
console.log JSON.parse data.responseText
Run Code Online (Sandbox Code Playgroud)
我们只需通过GET调用控制器的方法,处理成功和失败并显示返回的数据.
控制器:
def get_experiment
respond_to do |format|
format.js { render json: {} }
end
end
Run Code Online (Sandbox Code Playgroud)
该控制器简单地回复一个空哈希.
运行此示例时,控制台将显示带有"Failure"文本的空JSON,这显然表明它认为JSON格式不正确.
我不明白为什么空哈希被认为是格式错误的JSON.如果用render json: {foo: 'bar'}它替换它,它仍然会调用error方法.
小智 5
试试这个:
$.getJSON()而不是$.get()/get_experiment为/get_experiment.jsonformat.json { ... }而不是format.js此步骤不是必需的.但是如果你使用$.getJSON:
Accept: application/json标题如果请求的文档中没有扩展名(如.js,.xml,.json),Rails会假定客户端请求HTML页面.但是,由于您没有format.html在控制器操作中指定,这将导致错误.
从现在开始请求JSON文档,您需要在控制器操作中指定正确的处理程序.