Ajax GET请求响应缺少数据字段

时间:2019-03-26 13:51:23

标签: jquery ruby-on-rails reactjs

我从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

我在项目中不使用任何序列化程序。

我想念什么吗?

2 个答案:

答案 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)
  }
});