Ajax回调不能与Rails 3.0.5和jQuery 1.5.1一起使用

时间:2011-03-02 15:24:33

标签: ruby-on-rails ruby-on-rails-3 jquery

我在我的网站上使用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的内容完成,我希望上面的代码能够触发警报。什么都没发生。

有人有任何想法吗?

PS

上面的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>

1 个答案:

答案 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"

我希望这有帮助。