Как отобразить текст из ответа JSON Rails AJAX - Javascript возвращает [объект HTMLDocument] - PullRequest
0 голосов
/ 11 декабря 2019

У меня есть приложение Rails, в котором я создал контроллер AJAX / JSON для выполнения некоторых динамических обновлений HTML в представлении. Я следовал этому руководству: https://www.rubyguides.com/2019/03/rails-ajax/

Я выполняю вызов, подобный этому: ../related.json?vendor_id=1&budget_id=1, и он возвращает необработанный фрагмент HTML, который я хочу обновить (просто набор или строки таблицы).

Мой вызов выглядит следующим образом:

    Rails.ajax({
      url: url,
      type: 'GET',
      success: function(data) { 
        document.getElementById("related").innerHTML = "data"
//        alert(data)
      }
    })

Если я вручную просматриваю запрос JSON в браузере, вывод HTML будет таким, как ожидалось. Однако, когда я пытаюсь заменить HTML или даже просмотреть данные в тестовом предупреждении, я получаю обратно [object HTMLDocument]. Руководство, которым я следовал, использовало data.html для подачи innerHTML, но это не работает для меня. Не уверен, что это проблема UJS / JQuery.

Как установить этот элемент DOM с необработанным текстом из вызова JSON?

Ответы [ 2 ]

1 голос
/ 11 декабря 2019

Вы можете преобразовать необработанный текст в html с помощью функции JSON.stringify:

document.getElementById("related").innerHTML = JSON.stringify(data)
0 голосов
/ 11 декабря 2019

Я немного покопался и попробовал это в моем контроллере:

format.json { render  partial: 'related' } 

против

format.json { render html: render_to_string( partial: 'related' ) } 

Это добилось цели - я подумал, что подаю запрос JSON неверные данные- Похоже, когда я кормить его сырой текст против HTML, он работает нормально.

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