在bootstrap模式中使用ajax加载内容

fko*_*ler 22 jquery modal-dialog twitter-bootstrap

我想让我的bootstrap模式使用ajax检索数据:

<a href="{{ path('ajax_get_messages', { 'superCategoryID': 35, 'sex': sex }) }}" data-toggle="modal" data-target="#birthday-modal">
  <img src="{{ asset('bundles/yopyourownpoet/images/messageCategories/BirthdaysAnniversaries.png') }}" alt="Birthdays" height="120" width="109"/>
</a>
Run Code Online (Sandbox Code Playgroud)

我的模态:

<div id="birthday-modal" class="modal hide fade">
<div class="modal-header">
    <button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
    <h3>Birthdays and Anniversaries</h3>
</div>
<div class="modal-body">

</div>
<div class="modal-footer">
    <a href="#" data-dismiss="modal" class="btn">Close</a>
    {#<button class="btn" data-dismiss="modal" aria-hidden="true">Close</button>#}
</div>
</div>
Run Code Online (Sandbox Code Playgroud)

当我点击链接时,会显示模态但是正文是空的.此外,我没有看到任何ajax请求.我正在使用Bootstrap 2.1.1

我究竟做错了什么?

mar*_*out 40

最高投票答案在Bootstrap 3.3中已弃用,将在v4中删除.试试这个:

JavaScript的:

// Fill modal with content from link href
$("#myModal").on("show.bs.modal", function(e) {
    var link = $(e.relatedTarget);
    $(this).find(".modal-body").load(link.attr("href"));
});
Run Code Online (Sandbox Code Playgroud)

Html(基于官方示例.请注意,对于Bootstrap 3.*我们设置data-remote="false"为禁用不推荐使用的Bootstrap加载函数):

<!-- Link trigger modal -->
<a href="remoteContent.html" data-remote="false" data-toggle="modal" data-target="#myModal" class="btn btn-default">
    Launch Modal
</a>

<!-- Default bootstrap modal example -->
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
        <h4 class="modal-title" id="myModalLabel">Modal title</h4>
      </div>
      <div class="modal-body">
        ...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        <button type="button" class="btn btn-primary">Save changes</button>
      </div>
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

亲自尝试:https://jsfiddle.net/ednon5d1/


Chr*_*lla 27

在Bootstrap 3中轻松完成,如下所示:

<a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a>
Run Code Online (Sandbox Code Playgroud)

  • @Arkan在2.3.2中真的有用吗?我似乎无法使用上述语法使其工作.其他一切与2.3.2模态完美配合.但是我需要使用Marronsuisse发布的下面的代码才能使它运行起来. (2认同)

fko*_*ler 21

以下是我解决问题的方法,可能对某些人有用:

使用boostrap 2.1.1似乎没有Ajax模态

所以我最终自己编写代码:

$('[data-toggle="modal"]').click(function(e) {
  e.preventDefault();
  var url = $(this).attr('href');
  //var modal_id = $(this).attr('data-target');
  $.get(url, function(data) {
      $(data).modal();
  });
});
Run Code Online (Sandbox Code Playgroud)

调用模态的链接示例:

<a href="{{ path('ajax_get_messages', { 'superCategoryID': 6, 'sex': sex }) }}" data-toggle="modal">
    <img src="{{ asset('bundles/yopyourownpoet/images/messageCategories/BirthdaysAnniversaries.png') }}" alt="Birthdays" height="120" width="109"/>
</a>
Run Code Online (Sandbox Code Playgroud)

我现在通过ajax发送整个模态标记.

积分给drewjoh

  • 这将在每次DOM中创建一个新的模态.我宁愿在页面中使用模态容器并使用JS替换它的内容.例如.$( "#modalContainer")HTML(数据).$( "#modalContainer")模式(). (8认同)