【问题标题】:Rails - ajax response handlingRails - ajax 响应处理
【发布时间】:2016-08-27 16:42:13
【问题描述】:

我通过使用 ajax 调用向 3rd 方 api 发送数据以查看卡是否支持分期付款,然后我在 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) }

【问题讨论】:

    标签: jquery ruby-on-rails ajax


    【解决方案1】:

    如果您使用 Ajax,那么您必须在 JavaScript 代码中处理它以更改您的视图。

    在您的控制器中使用它来将数据传递给您的 Ajax 调用(替换虚拟哈希):

    render json: { test: "hello" }
    

    在您的 ajax 成功函数中,我刚刚渲染的 JSON 对象将可以在函数的 data 参数中访问。现在我必须使用 javascript 来操作视图

    编辑:

    为了回答您的编辑,我猜您的 JSON 中有一些更复杂的字符,例如中文、土耳其语、...。也许这可能会对您有所帮助 Encoding::UndefinedConversionError

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-02
      • 2014-09-28
      • 2016-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多