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 数据设置一个查询参数 =,而不是将直接的 JSON 传递回 rails。您希望您的 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 回答