0

多くの同様のリクエストを見ましたが、何も意味がありませんでした: Google API ジオコーダーを使用して住所に関する詳細情報を取得しています。API から返されるのは json 形式のデータです。このjsonデータをRailsコントローラーに渡してさらに処理しようとしています。したがって、私の見解では、次のjqueryがあります。

    $(document).ready(function() {
      $("#address").blur(function(){
        var address = $("#address").val();
        if(address != ""){
          processAddress(address, function(data, s){        
              $.ajax({
                type: "GET",
                contentType: 'application/json',
                url: "pages/process",
                data: data,
                success: function(msg) {
                  $(".processed-info").html(msg);
                }
              });        
          });
        }
      });

processAddress は、「データ」として読み込んだ json オブジェクトを返します。このデータを Rails コントローラーに渡し、次のように受け取りたいと考えています。

def process
  @address_json = ...
end

私は物事の多くの組み合わせを試しましたが、質問を混乱させても意味がありません。誰もこれを試したことがありますか?

4

1 に答える 1

0

json オブジェクトを URL のクエリ パラメータとして渡す必要があります。そのまま JSON を Rails に渡す代わりに、json データに query param = を設定する必要があります。URL をpages/process?api_json=data. 現在の方法では、json の各属性を個別のクエリ パラメータに渡します。

次のようにしてみてください:

$(document).ready(function() {
  $("#address").blur(function(){
    var address = $("#address").val();
    if(address != ""){
      processAddress(address, function(data, s){        
          $.ajax({
            type: "GET",
            contentType: 'application/json',
            url: "pages/process",
            data: { google_json: data },
            success: function(msg) {
              $(".processed-info").html(msg);
            }
          });        
      });
    }
  });

そこから、コントローラーで次のようになります。

def process
  @address_json = params[:google_json]
end
于 2012-07-03T19:32:37.380 に答える