2011-12-11 78 views
2

我一直在谷歌搜索,仍然无法找到任何答案。所以基本上在我的JavaScript函数,我想发送一个GET请求到我的轨道控制器和铁轨控制器会发回一个JSON对象。任何想法如何做到这一点? thnx如何发送GET请求到导轨从javascript

回答

4

您可以使用jQuery ajax从JavaScript请求getpost请求。

jQuery.ajax({ 
    url: "url to controller method", // it should be mapped in routes.rb in rails 
    type: "GET", 
    data: {field1 :value1, field2:value2}, // if you want to send some data. 
    dataType: "json" 
    success: function(data){ 
    // data will be the response object(json) 
    } 
}); 

来自rails的响应类似于下面的内容,您可以按照您的要求进行修改。

respond_to do |format| 
    format.js { render :json => @json_data } 
end 
+0

那么rails会如何将JSON对象发送回javascript呢? thnx – hlim

+0

在代码中添加..尝试类似的东西 –

7

使用jQuery我会做这样的事情:

在您需要的选择和事件,例如在点击一些元素:

$(function() { 
    $('#foo').click(function(){ 
    var params = '{"field1": "value1", "field2: "value2"}'; 
    $.get('/controller/bar', params, function(data){ 
     alert(data); 
    }); 
    }); 
}); 

然后在你的Rails控制器:

def bar 
    /// hack hack hack 
    render :json => {"response" => "OK"} 
end 

的在你的routes.rb:

match 'controller/bar' => 'controller#bar' 

最后,变 “控制器”,根据你的代码。 Firebug是你的朋友!

+0

Im对不起,我仍然是一个newby,所以在轨道发送JSON对象后,我如何访问我的JavaScript中的数据? – hlim

+0

@mamonluk你可以通过数据变量访问数据,例如data.response就是“OK” - 你可以用alert(data.response)来尝试它。 - 或者如果你想在HTML中显示它本身的“响应”ID,你可以做一些像$('#response')。html(data.response); – anders