用AJAX替换div的内容

时间:2016-11-23 18:52:52

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

我有这个div

<div class="right-content"> </div>

我在其中加载了我想通过AJAX显示的所有数据 我已经加载了一些html,其中有一个像

这样的链接
<%= link_to job_applicants_path(j.id), :class => "applicants-link" do %>
    <span class="badge"><%= cantSolic (j.id) %></span>
<% end %>

当我点击该链接时,我想删除右内容div的先前内容,并从job_applicants的视图中加载新的html,但是它会像新页面一样加载它。我怎么能这样做?

这是我正在使用的js:

$(".applicants-link").click(function(){
    var link = $(this);
    var path = link.attr("href");
    if (path != null){
        $.ajax({
            url: path,
            async: true,
            success: function(result){
                $(".right-content").html(result);
            },
            error: function(result){
                $(".right-content").html ("<h4>No se ha podido cargar la información solicitada. Intentelo más tarde.</h4>")
            }
        })
    return false;
    } 
});

2 个答案:

答案 0 :(得分:0)

  • 1,来自其他网页的数据会被加载到您将其称为<div class="right-content">的数据中 '整页'。

  • 2,您可以在该页面上放置<div>给它一个id(要获取),然后发出一个简单的ajax请求来加载内容。

    $('#currentdiv')。load('page.asp #div_to_load');

它会将#div_to_load的内容从其他页面加载到当前页面的#currentdiv

答案 1 :(得分:0)

Rails有一种方法可以处理这个问题而无需编写click函数和$ ajax调用。更改链接,以便rails知道您要通过添加:remote => true来发送ajax请求:

<%= link_to job_applicants_path(j.id), :class => "applicants-link", :remote => true do %>
<span class="badge"><%= cantSolic (j.id) %></span>

然后在你的控制器中(我假设job_applicants_path被路由到你的控制器中的&#34; show&#34;动作)响应ajax请求并执行特定于ajax请求的任何事情:

def show
  #your logic for all requests types here
  @some_variable = "abc123"
  respond_to do |format|
    format.html {}
    format.js { #do any ajax specific stuff here }
  end
end

然后Rails会发送文件show.js.erb的内容作为JS执行,所以你可以在其中输入这样的东西:

$(".right-content").html("<%= escape_javascript(render(partial: 'name_of_your_partial_to_render', locals: { some_variable: @some_variable}))%>")