如何操作AJAX返回的JSON对象?

时间:2013-05-09 04:58:39

标签: ruby-on-rails ruby ajax json

我在我的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", ...]

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

思想?

3 个答案:

答案 0 :(得分:1)

您需要停止<a>的默认操作(即打开href属性指定的页面)

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

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

添加:remote => true作为链接参数,同时确保您在application.js中有:

//= require jquery
//= require jquery_ujs