0

我有一个使用 ruby​​ on rails 的 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);

仍然没有运气。帮助伙计们。谢谢!

4

3 回答 3

1

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

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

  success: function(data) {
    $("#modalPrice").html(data.city);
  }
于 2013-09-20T12:01:06.473 回答
1

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

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

在 JS 上:

success: function(data) {
    var listing = data.city;
}
于 2013-09-20T12:59:18.437 回答
0

每次在 Rails 中使用 AJAX 时,我都会遇到类似的问题,因为响应似乎因返回值的方式或在 JS 中处理成功的方式而异。尝试这个:

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

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

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

于 2013-09-20T09:52:55.300 回答