我从React组件向后端Rails应用程序发出GET请求,并收到成功的响应(200),但是我缺少保存数据库中对象列表的respose对象中的数据属性。这是我的Ajax请求
$.ajax({
method: 'GET',
url: '/dashboard/jobs/eligible',
dataType: 'json',
success: (response) => {
console.log(response)
}
});
当我执行console.log(response.data)时,我得到“未定义”。不过,我从后端获得了一个对象的数组。
console.log(response) # [{...}]
从数据库保存一个对象。
这是我的dashboard/jobs
控制器动作:
def eligible
@eligible_jobs = EligibleJobsDatatable.new(current_user).call
respond_to do |format|
format.html
format.js { render json: @eligible_jobs }
end
end
我在项目中不使用任何序列化程序。
我想念什么吗?
答案 0 :(得分:1)
响应正确。这是一个序列化的对象。
但是,我认为您需要遵循jsonapi标准的响应。如果是真的,我建议您使用一个gem来处理将对象序列化为JSON的过程,即fast_jsonapi。
答案 1 :(得分:1)
当我执行console.log(response.data)时,我得到“未定义”。不过,我从后端获得了一个对象的数组。
这就是它应该如何工作的。
来自Ajax文档:
成功
类型: Function(任何数据,字符串textStatus,jqXHR jqXHR )如果请求成功,将调用的函数。函数获取 传递了三个参数:服务器返回的数据,格式化 根据dataType参数或dataFilter回调 功能(如果指定);描述状态的字符串;和jqXHR (在jQuery 1.4.x中,是XMLHttpRequest)对象。
Ajax请求接受数据参数,textStatus和请求对象。如果需要这些,请按以下方式创建函数:
$.ajax({
method: 'GET',
url: '/dashboard/jobs/eligible',
dataType: 'json',
success: (data, status, obj) => {
console.log(data)
}
});