0

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

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

想法?

4

3 回答 3

1

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

$('#rankings_link a').click(function(e){
  e.preventDefault(); // <- this
  // ...
});
于 2013-05-09T05:00:56.313 回答
0

在将其发送到视图之前尝试验证您的 JSON。

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

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

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

于 2013-05-09T05:16:19.907 回答
0

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

//= require jquery
//= require jquery_ujs
于 2013-05-09T05:16:55.720 回答