Загружать контент с помощью ajax в bootstrap modal
Я пытаюсь получить мои загрузочные модальные данные извлечения с помощью 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>
Мой модальный:
<div id="birthday-modal" class="modal hide fade">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</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>
Когда я нажимаю на ссылку, отображается модальная мода, но тело пуст. Кроме того, я не вижу никакого запроса ajax.
Я использую Bootstrap 2.1.1
Что я делаю неправильно?
Ответы
Ответ 1
Вот как я решил проблему, может быть полезной для некоторых:
Ajax modal, похоже, не доступен с boostrap 2.1.1
Итак, я сам его кодировал:
$('[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();
});
});
Пример ссылки, которая вызывает модальность:
<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>
Теперь я отправляю всю модальную разметку через ajax.
Кредиты drewjoh
Ответ 2
Главный голосовой ответ устарел в Bootstrap 3.3 и будет удален в версии 4. Вместо этого попробуйте:
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"));
});
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">×</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>
Попробуйте сами: https://jsfiddle.net/ednon5d1/
Ответ 3
Легко сделать в Bootstrap 3 так:
<a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a>