2011-12-11 16 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