无法使用原型和rails将复杂的json数据发送到服务器

时间:2009-07-05 13:00:27

标签: ruby-on-rails json prototypejs

我正在尝试将以下数据发送到服务器,但在服务器端,我没有看到我发送的json参数。谁能告诉我我做错了什么?

下面你可以看到代码。

原型:

send_data_url = "change"  

hash = $H({"blocks": [{"h": "2", "area": [{"width": "96%", "els": [{"title": "first", "mand": true}, {"title": "second", "mand": false}]}]}]});  

var request_array_json = hash.toJSON();  

new Ajax.Request(send_data_url, {  
  method: 'post',  
  parameters: request_array_json,  
  contentType: 'application/json;'  
});  

滑轨:

def change()  
   debugger  
   my_json = ActiveSupport::JSON.decode(params["_json"])  
end  

在控制器中,我看到params对象没有json参数 它只显示动作和控制器:

{"action"=>"change", "id"=>nil, "controller"=>"default/test"}  

注意:我正在使用原型1.6 qnd rails 2.3.2。

1 个答案:

答案 0 :(得分:0)

我找到了一个使用名为json_request的插件的解决方案。

为了使这个工作得很好,我还用一个可以发送复杂JSON对象的新类包装了Ajax.Request。示例代码:

Ajax.JSON = Class.create(Ajax.Request, {
  initialize: function($super, url, options) {
    options = options || {};
    options.contentType = ‘application/x-www-form-urlencoded’;
    options.postBody = Object.toJSON(options.object);
    $super(url, options);
  }
});

new Ajax.JSON(url, { object: myObject });

了解详情:http://labnotes.org/2007/12/11/json_request-handling-json-request-in-rails-20/comment-page-1/#comment-143190#ixzz0n5iKnO60