我有点困惑:我正按照question编写一个集中控制器,我对respond_to
方法的工作有点困惑。
在API::Controller
我有这样的事情:
def index
@post = Post.all
render json: @posts
end
在js(AngularJS)方面,我有类似的东西:
$http.defaults.headers.common.Authorization = 'Token token='+ $scope.user.auth_token;
$http.get('/api/posts').success(function (data) {
$scope.posts = data;
});
在API控制器上工作正常,但是我想使用共享控制器:
def index
@post = Post.all
respond_to do |format|
format.html { render layout: 'admin' }
format.json { render json: @invoices }
end
end
但是,当我尝试执行ajax调用时,似乎API正在使用html
而不是json
进行响应。
我错过了什么?
答案 0 :(得分:2)
在您尝试使用的网址末尾附加.json
。这样,服务器就会知道请求要求JSON格式的数据,而默认格式是HTML。
如果您正在使用jQuery来执行AJAX,并希望以JSON格式接收数据而不在末尾添加.json
,则可以使用函数$.getJSON()
,或者可以简单地传递$.jquery()
函数调用中的选项dataType: "json"
:
$.ajax({
dataType: "json", // To receive data back in JSON
url: url,
data: data,
success: success
});