【问题标题】:How do I manipulate a JSON object returned by AJAX?如何操作 AJAX 返回的 JSON 对象?
【发布时间】:2013-05-09 04:58:38
【问题描述】:

我的 Rails 应用中有这个 jQuery:

  $('#rankings_link a').click(function(){
    $.ajax({
      dataType: 'json',
      contentType: 'application/json',
      url: '/rankings',
      type: 'get'
    }).done(function(received_data){
      for (var m = 0; m < received_data.length; m++) {
        $('#rankings ol').append('<li>' + received_data[m] + '</li>');
      }
    });
  });

在我的控制器中排名方法的最后是:

:render => 'json'

但是当我点击#rankings_link 时,它会将我发送到/rankings 并显示一大块预先格式化的文本,如下所示:

["Farag, Ali", "Harrity, Todd", ...]

我希望能够将数组的每个元素(似乎是)放入有序列表中。但显然这不是正在发生的事情,我不知道为什么。

想法?

【问题讨论】:

    标签: ruby-on-rails ruby ajax json


    【解决方案1】:

    需要停止&lt;a&gt;的默认动作(即打开href属性指定的页面)

    $('#rankings_link a').click(function(e){
      e.preventDefault(); // <- this
      // ...
    });
    

    【讨论】:

    • 但如果我这样做,它不会呈现任何东西,因为我将数据附加到不同的页面上。即我在主页上,单击该链接,如果我在那里有 peventDefault(),它不会转到 /rankings 页面...知道我的意思吗?
    【解决方案2】:

    添加:remote =&gt; true作为链接参数,同时确保你的application.js中有:

    //= require jquery
    //= require jquery_ujs
    

    【讨论】:

      【解决方案3】:

      在将 JSON 发送到视图之前尝试验证它。

      最好先发送一些硬编码的 JSON。 Online JSON Viwer 以一种很好的方式验证 JSON。

      您也可以手动创建 JSON 并将其呈现为文本,jQuery 会将其返回为 JSON。

      ActiveSupport中有to_json方法,你也可以试试。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2013-05-02
        • 1970-01-01
        • 2013-12-29
        • 2013-10-02
        • 1970-01-01
        • 1970-01-01
        • 2018-07-14
        相关资源
        最近更新 更多