我正在使用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();
}
所以,这里的问题是**
编辑:Kaeros的答案很有效,我的控制器看起来像:
respond_to do |format|
format.json { render :json => @students_data }
end
答案 0 :(得分: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