Rails - обработка ответов ajax

0

Я отправляю данные с помощью ajax-вызова на сторонний api, чтобы узнать, поддерживает ли плата платеж, после чего я получаю ответ в payment#new действии payment#new, я просто не знаю, как показать ответ на просмотр.

ajax-вызов;

                $.ajax({
                 type: "GET", 
                 url: "/payments/new", 
                 dataType: "json", 
                 data: {card_digit},
                 success: function(data) {}, 
                 error: function(jqXHR) {}
                }); 

payments#new действие

def new
...
...
uri = URI.parse("https://...")
      https = Net::HTTP.new(uri.host,uri.port)
      https.use_ssl = true
      req = Net::HTTP::Post.new(uri.path, @headers)


      req.body = @body.to_json
      res = https.request(req)


      puts "Response #{res.code} #{res.message}: #{res.body}"

end

Затем здесь он возвращает res.body как объект json, я хотел бы показать это в представлении, которое я попытался назначить переменной, например @return, затем использовать ее в представлении, но нет шансов, я попытался ответить на блок, но не смог Удалось это сделать.

РЕДАКТИРОВАТЬ

Спасибо за ответ !, Но теперь я получаю ошибку Encoding::UndefinedConversionError ("\xC4" from ASCII-8BIT to UTF-8)

res.body возвращается;

{"bankId":"13","bankName":"...","cardFamilyId":"..","cardFamilyName":"...","cardThreeDSecureMandatory":"0","merchantThreeDSecureMandatory":"0","result":"1","serviceProvider":"2","supportsInstallment":"1","type":"1"}

Я написал;

render json: { res_body: res.body }

и console.log(data) в функции успеха

почему это произойдет?

РЕДАКТИРОВАТЬ

я добавил

render json: { res_body: JSON.parse(res.body) }

1 ответ

1
Лучший ответ

Если вы используете Ajax, тогда вы должны обработать его в своем JavaScript-коде, чтобы изменить свое представление.

Используйте это в своем контроллере для передачи данных на ваш вызов Ajax (замените фиктивный хеш):

render json: { test: "hello" }

В вашей успешной функции ajax объект JSON, который я только что просмотрел, будет доступен в параметре данных функции. Теперь мне нужно манипулировать представлением с помощью javascript

РЕДАКТИРОВАТЬ:

Чтобы ответить на ваши изменения, я думаю, у вас есть некоторые символы, которые сложнее обрабатывать в вашем JSON, например, китайском, турецком,.... Может быть, это может помочь вам Encoding :: UndefinedConversionError

Ещё вопросы

Сообщество Overcoder
Наверх
Меню