这是我的JS功能,
function checkHash() {
var myHash = {"apples": 3, "oranges": 4, "bananas": 42}
var url = '../../some_contoller/some_action'
var pars = 'myHash=' + encodeURIComponent(myHash)
var myAjax = new Ajax.Request(
url,
{
method: 'get',
asynchronous: asyncFlag,
parameters: pars,
onSuccess: function(transport) {
//alert(transport.responseText);
try {
tax_hash = eval('('+transport.responseText+')');
//alert("tax_hash = " + tax_hash)
}
catch(err){
return
}
onFailure: function() {
}
}
}
)
}
Rails行动,
def some_action
p params ##It will print {"myHash"=>"[object Object]"}
结束
我想打印{“苹果”:3,“橘子”:4,“香蕉”:42}
答案 0 :(得分:0)
首先,在您的AJAX请求结果上使用eval不是一个好主意。将请求解释为JSON(如果你正在使用它的全部内容)要好得多。
以下是有关如何告诉rails返回JSON的信息: http://guides.rubyonrails.org/layouts_and_rendering.html#rendering-json
另外,我建议只返回您感兴趣的参数而不是全部:
def some_action
render json: params.reject {|k,v| ![:action,:controller, :other_params].include?(k)}
end