2016-08-27 6 views
0

サードパーティのAPIにajaxコールを使用してデータを送信して、カードが割賦をサポートしているかどうかを確認してから、payment#newのアクションで応答が得られます。 。Rails - ajaxレスポンスの処理

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 

は次にここではJSONオブジェクトとしてres.bodyを返し、私はそれを使用し@returnのような変数に代入しようとしているビューにこれを表示したいと思いますビューではなく、チャンスは、私はブロックに応答してみましたが、それを行うこともできませんでした。

EDIT

は !、答えてくれてありがとうしかし、今、私はエラー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)なぜそれが起こるのでしょうか?

EDIT

は、私はあなたがアヤックスを使用している場合、あなたはあなたのビューを変更するには、JavaScriptコードでそれを処理する必要が

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

答えて

1

を追加しました。私は、レンダリングJSONオブジェクトは、データにアクセスできるようになりますAJAXのあなたの成功の機能で

render json: { test: "hello" } 

:あなたのAjax呼び出し(ダミーハッシュを置き換える)にデータを渡すためにあなたのコントローラで

使用この関数のパラメータ。私はあなたが中国語、トルコ語、...多分これかもしれないようなあなたのJSONで取り扱いが複雑で一部の文字を持っていると思います

あなたの編集に答えるために:今、私はjavascriptの

EDITを使用してビューを操作する必要がありますお助けくださいEncoding::UndefinedConversionError

関連する問題