如何从JavaScript向Rails发送GET请求

5

我整天在Google上搜索,仍然找不到任何答案。所以基本上在我的JavaScript函数中,我想发送GET请求到我的Rails控制器,然后Rails控制器将返回一个JSON对象。你有什么想法吗?谢谢。

2个回答

9

使用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'

最后,根据你的代码更改“控制器(controller)” 。 Firebug是你的好帮手!

抱歉,我还是个新手,那么在 Rails 发送 JSON 对象后,我如何在 JavaScript 中访问该数据? - hlim
@mamonluk你可以通过data变量访问数据,例如:data.response将会是“OK”- 你可以通过alert(data.response)来尝试 - 或者如果你想在HTML中的“response” ID中显示它,你可以这样做:$('#response').html(data.response); - anders

5

您可以使用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

Rails会如何将JSON对象发送回JavaScript呢?谢谢。 - hlim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接