我在我的网站上使用Kaminari gem进行了ajax分页,但是我很难让ajax回调工作
我正在使用jquery-1.5.1,rails 3.0.5并且我有最新的rails.js文件
我的podcasts.html.haml
如下所示
#paginator
= paginate @podcasts, :remote => true
#podcasts
= render @podcasts
我的index.js.erb文件如下所示:
$('#podcasts').html('<%= escape_javascript render(@podcasts) %>');
$('#paginator').html('<%= escape_javascript(paginate(@podcasts, :remote => true).to_s) %>');
事情的分页方面工作正常,页面确实通过ajax加载,但我想做一些ajax回调,我只是无法弄清楚如何使这个工作。
我尝试将以下代码的众多变体添加到我的application.js文件中,但根本没有成功:
$('#paginator a').bind('ajax:success', function(data, status, xhr) {alert("success!");})
一旦ajax的内容完成,我希望上面的代码能够触发警报。什么都没发生。
有人有任何想法吗?
上面的paginate方法来自Kaminari gem,它会创建以下html:
<div id="paginator">
<nav class="pagination">
<a href="/podcasts" data-remote="true">Page 1</a>
<a href="/podcasts?page=2" data-remote="true">Page 2</a>
<a href="/podcasts?page=3" data-remote="true">Page 3</a>
</nav>
</div>
答案 0 :(得分:1)
我无法完全遵循您的代码,但我做了一个简单的测试(jquery 1.5.1,rails 3.0.5),它对我有用:
<强> ajax_controller.rb 强>
class AjaxController < ApplicationController
def get_data
respond_to do |format|
format.js { sleep 1; render :json => "ajax value" }
end
end
end
<强> index.html.erb 强>
<%= link_to "get_data", get_data_path, :remote => true, :id => 'request' %>
<div id="response">
</div>
<%= javascript_tag do %>
$("#response").html("default value");
$("#request").bind("ajax:success", function(e, data, status, xhr) {
$("#response").html(data);
});
<% end %>
<强>的routes.rb 强>
get "ajax/index"
get "ajax/get_data", :as => "get_data"
我希望这有帮助。