0

我正在运行带有 Prototype 和 RJS 的 Rails 3.0 应用程序。我想转换为只使用 jQuery。

我的问题是

1. 使用jQuery时是否可以完全摆脱RJS?

2.如果不是,我如何转换以下内容:

我的index.html.erb中有以下 DIV 元素:

<div id="students"></div>

我有一个ajaxCalls.js.erb包含以下内容:

$.ajax({
    url: '<%=populate_students_path()%>',
    type: 'POST',
    data: 'authenticity_token=' + AUTH_TOKEN,
    dataType: 'html', // Consider changing to HTML if this doesnt work
    beforeSend: function (xhr) {
      xhr.setRequestHeader("Accept", "text/javascript");
    }
  }).done(function (data) {

    // TODO Populate table with populate function
    var users_table = $('#students').dataTable({
      'aData': data
    });
  });

我得到以下回复:

try {
populate("{\"54\":{\"section\":\"-\",\"filter_table_row_contents\":\"<td>\\n  c5leharf\\n</td>\\n<td>\\n  Lehar\\n</td>\\n<td>\\n  Franz}")
}

我有一个populate.rjs,其中包含:

page.call "populate", @students.to_json

可能会调用以下内容,但我不确定:

function populate(json_data) {
  users_table.populate(json_data);
  users_table.render();
}

所以,这里的问题是**

如何使我的响应正确呈现?如何从 AJAX 调用检索的数据中删除填充函数?如何获得纯 JSON?

编辑:Kaeros 的回答有效,我的控制器看起来像:

respond_to do |format|
  format.json { render :json => @students_data } 
end
4

1 回答 1

1

您可以使用类似于您正在使用的 ajax 方法(期望来自服务器的 json):

$.ajax({
    url: '<%=populate_students_path()%>',
    type: 'POST',
    data: 'authenticity_token=' + AUTH_TOKEN,
    dataType: 'json',
    beforeSend: function (xhr) {
      xhr.setRequestHeader("Accept", "text/javascript");
    }
  }).done(function (data) {
    //Do something with the data received as json
  });

在你的控制器方法中,你只需要返回 json。

respond_to do |format|
  format.json { render json: @some_instance_variable }
end
于 2013-02-27T02:24:50.020 回答