Ajax在rails上调用ruby

时间:2013-09-20 09:36:51

标签: ruby-on-rails ajax json

我在rails上使用ruby进行了ajax调用。我取得了成功,但我不知道如何使用ajax调用的数据结果。

$.ajax({
  url: "/search/get_listing?listing_id" + id,
  dataType: 'JSON',
  success: function(data) {
    var listing = JSON.parse(data);
    $("#modalPrice").html(data.city);
  }
});

控制器:

@listings_data = Listings.find_by(id: params[:id])

render :json => @listings_data.to_json

使用data.city不起作用。我希望通过简单地放置从模型中获取值。在变量上

var listing = JSON.parse(data);

仍然没有运气。帮帮我们谢谢!

3 个答案:

答案 0 :(得分:1)

JSON.parse是Ruby代码,JSON gem的API。你们怎么能在Javascript中使用它:)

jQuery可以直接处理JSON对象data。只需使用:

  success: function(data) {
    $("#modalPrice").html(data.city);
  }

答案 1 :(得分:1)

例如,您可以在控制器中进行渲染:

render :json => { :city => @listings_data }

关于JS:

success: function(data) {
    var listing = data.city;
}

答案 2 :(得分:0)

每次我在rails中使用AJAX时都遇到类似的问题,因为响应似乎有所不同,具体取决于您返回值的方式或处理JS成功的方式。试试这个:

success: function(data, status, xhr) {
             var listing = JSON.parse(xhr.responseText);
             $("#modalPrice").html(data.city);
         }

我通常使用Firebug(Firefox插件)在我的成功处理程序中设置断点,以检查响应所在的参数。有时它位于第一个值中,有时在其他值中,然后它可能是{{1} }甚至是xhr.response。每次都让我很困惑。

要使用Firebug,请在页面上按F12,选择“脚本”窗格并找到要检查的代码。单击要使用断点的代码的行号旁边的。在这种情况下,您可以选择xhr.responseText行。当代码执行时(点击后),浏览器将停在那里,您可以检查右侧传递的参数。