Ajax GET запрос ответа отсутствует поле данных - PullRequest
0 голосов
/ 26 марта 2019

Я делаю GET-запрос к своему бэкэнд-приложению Rails из моего компонента React и получаю успешный ответ (200), однако мне не хватает атрибута данных в объекте respose, содержащем список объектов из базы данных. Вот мой запрос Ajax

$.ajax({
  method: 'GET',
  url: '/dashboard/jobs/eligible',
  dataType: 'json',
  success: (response) => {
    console.log(response)
  }
});

Когда я делаю console.log (response.data), я получаю 'undefined'. Я получаю массив из одного объекта из бэкэнда.

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 ]

1 голос
/ 26 марта 2019

Когда я делаю console.log (response.data), я получаю 'undefined'.Я получаю массив из одного объекта из бэкэнда.

Вот как это должно работать.

Из документации Ajax:

success

Тип: Функция (Все данные, String 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)
  }
});
1 голос
/ 26 марта 2019

Ответ правильный. Это сериализованный объект.

Однако я считаю, что вам нужен ответ, который соответствует стандарту jsonapi . Если это правда, я предлагаю вам использовать гем, который будет обрабатывать сериализацию вашего объекта в JSON, т.е. fast_jsonapi .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...