【问题标题】:Ajax call on ruby on railsAjax 调用 ruby​​ on rails
【发布时间】:2013-09-20 09:36:51
【问题描述】:

我有一个使用 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);

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

【问题讨论】:

    标签: ruby-on-rails ajax json


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

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

      在 JS 上:

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

      【讨论】:

        【解决方案3】:

        每次在 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 行。当代码执行时(点击后),浏览器会停在那里,您可以在右侧检查传递的参数。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-09-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多