【问题标题】:How to send GET request to rails from javascript如何从javascript向rails发送GET请求
【发布时间】:2011-12-11 07:21:18
【问题描述】:

我整天都在谷歌上搜索,但仍然找不到任何答案。所以基本上在我的 javascript 函数中,我想向我的 rails 控制器发送一个 GET 请求,rails 控制器将发回一个 JSON 对象。知道我该怎么做吗?谢谢

【问题讨论】:

    标签: javascript ruby-on-rails json


    【解决方案1】:

    使用 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 是你的朋友!

    【讨论】:

    • 对不起,我还是个新手,所以在 rails 发送 JSON 对象后,我如何在我的 javascript 中访问该数据?
    • @mamonluk 您可以通过 data 变量访问数据,例如 data.response 将是“OK” - 您可以尝试使用 alert(data.response); - 或者,如果您想在 HTML 本身中以“响应”ID 显示它,您可以执行类似 $('#response').html(data.response); 的操作
    【解决方案2】:

    您可以使用 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?谢谢
    猜你喜欢
    • 2016-04-18
    • 1970-01-01
    • 2013-10-29
    • 2012-06-14
    • 1970-01-01
    • 2010-10-31
    • 1970-01-01
    相关资源
    最近更新 更多