【问题标题】:Ajax Call back Doesnt respondAjax 回调没有响应
【发布时间】:2015-06-24 18:25:12
【问题描述】:

我和这个问题Ajax callbacks not working with Rails 3.0.5 and jQuery 1.5.1有同样的问题。我不明白它的答案,但是。我找到了导致问题的原因,但不确定为什么会出现问题以及如何解决。我正在使用 Kaminari gem。

请帮帮我。

在我的视图中:

<div id="paginator">
  <%= paginate @user, params: {id: nil, pgsz: 20}, remote: true %>
</div>

在我的控制器中:

  @user = Kaminari.paginate_array(@properties, total_count: @search_result.total_count).page(@pg).per(@pgsz)
    respond_to do |format|
      format.js
      format.html
    end

在我的 Show.js.erb

$('#list').html("<%=j (render 'search_result_list') %>");
$('#paginator').html("<%=j (paginate(@user, params: {id: nil, pgsz: 20}, remote: true).to_s) %>");

在我监控 ajax 的另一个 JS 文件中

$('#paginator')
.on("ajax:send",  function () {
  // Run a spinner
  console.log("=====BEfore SEND");
})
.on("ajax:complete",  function (e, data, status, xhr) {
  // Stop the spinner
  console.log("=====Afte SEND");
})

所以我发现$('#paginator').html("&lt;%=j (paginate(@user, params: {id: nil, pgsz: 20}, remote: true).to_s) %&gt;"); 这行导致不回调ajax:successs or ajax:complete。但是如果我修改$('#paginator').htmlto $('#paginator').append 回调发生但它不是我需要的。

更新

刚刚发现它不仅导致$('#paginator').html("&lt;%=j (paginate(@user, params: {id: nil, pgsz: 20}, remote: true).to_s) %&gt;");,而且如果我只是将其修改为$('#paginator').html("Hey");也不会导致回调。

知道为什么会这样吗?

【问题讨论】:

    标签: javascript jquery html ruby-on-rails ajax


    【解决方案1】:

    尝试更改控制器中format 的顺序。

    @user = Kaminari.paginate_array(@properties, total_count: @search_result.total_count).page(@pg).per(@pgsz)
        respond_to do |format|
          format.html
          format.js
        end
    

    我遇到了类似的问题,最后添加 format.js 有帮助。我在 html 之后也有format.json,不确定你是否需要这个。

    【讨论】:

      猜你喜欢
      • 2013-02-05
      • 2015-10-31
      • 1970-01-01
      • 1970-01-01
      • 2011-03-11
      • 2019-08-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多