AJAX引导模式未显示
AJAX Bootstrap Modal Not Showing
我试图展示以下模态,其中主体是数据库驱动的。但是,该数据不会出现在引导模式中。我已经看了太久了,看不出这个问题!
模态
<div class="modal fade" id="eventDetailsModal" tabindex="-1" role="dialog" aria-labelledby="memberModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button>
<h4 class="modal-title" id="memberModalLabel">Event Details</h4>
</div>
<div class="dash">
</div>
</div>
</div>
</div>
AJAX
$('#eventDetailsModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // Button that triggered the modal
var recipient = button.data('whatever') // Extract info from data-* attributes
var modal = $(this);
var dataString = recipient;
$.ajax({
type: "GET",
url: "/getNearestPC.php",
data: {"foo": dataString},
cache: false,
success: function (data) {
console.log(data);
console.log(dataString);
console.log(recipient);
$('.dash').html(data);
},
error: function(err) {
console.log(err);
}
});
})
getNearest.php
//SQL Setup
$PC = $_GET['foo'];
<div class="modal-body center" style="background-color: #FFFFFF">
<table id="preusertable" class="table table-striped table-hover table-curved" style="width: 100%;">
<thead>
<tr>
<th style="color: #000000;">Event</th>
<th style="color: #000000;">Postcode</th>
</tr>
</thead>
<tbody>
<?php
while ($row = $sData->fetch(PDO::FETCH_ASSOC)) {
$school = $row['SchoolURL'];
$postcodeFull = $row['Postcode'];
?>
<tr>
<td style="font-size: 1.1em;"><?php echo $school ?></td>
<td style="font-size: 1.1em;"><?php echo $postcodeFull ?></td>
</tr>
<?php
}
?>
</tbody>
</table>
</div>
模式触发器
<a data-toggle="modal" data-target="#eventDetailsModal" data-whatever="<?php echo $postcode ?>">
任何帮助都会很棒!它只显示模态标头,但没有正文
与其在模式显示的事件中填充它,不如在<a>
:的点击事件中尝试这样做
$('a').on('click', function (event) {
var button = $(this); // Button that triggered the modal
var recipient = button.data('whatever'); // Extract info from data-* attributes
var modal = $("#eventDetailsModal");
var dataString = recipient;
$.ajax({
type: "GET",
url: "/getNearestPC.php",
data: {"foo": dataString},
cache: false,
success: function (data) {
console.log(data);
console.log(dataString);
console.log(recipient);
$('.dash').html(data);
},
error: function(err) {
console.log(err);
}
});
})
将其保存为"modal_template.html":
<div class="modal-body center" style="background-color: #FFFFFF">
<table id="preusertable" class="table table-striped table-hover table-curved" style="width: 100%;">
<thead>
<tr>
<th style="color: #000000;">Event</th>
<th style="color: #000000;">Postcode</th>
</tr>
</thead>
<tbody>
{TBODY}
</tbody>
</table>
这应该是你的AJAX请求:
<?php
$PC = $_GET['foo'];
$tmpl = file_get_contents("modal_template.html");
$replace = "";
while ($row = $sData->fetch(PDO::FETCH_ASSOC)) {
$school = $row['SchoolURL'];
$postcodeFull = $row['Postcode'];
$replace .= '<tr><td style="font-size: 1.1em;">' . $school . '</td><td style="font-size: 1.1em;">' . $postcodeFull . '</td></tr>';
}
$tmpl = str_replace("{TBODY}", $replace, $tmpl);
echo $tmpl;
?>
有了它,您将获得一个清晰的模态模板。如果你已经发布了所有的代码,这应该会对你有所帮助,你的console.log(data)应该记录你的"模态模板"。
编辑:
还有一点修改了你的Jquery(发现一些缺失的";"):
$('#YOUR MODAL TRIGGER ID').on('click', function (event) {
event.preventDefault;
var button = $(event.relatedTarget) // Button that triggered the modal
var recipient = button.data('whatever') // Extract info from data-* attributes
var modal = $(this);
var dataString = recipient;
$.ajax({
type: "GET",
url: "/getNearestPC.php",
data: {"foo": dataString},
cache: false
}).done(function(data){
if(data != ""){
console.log(data);
console.log(dataString);
console.log(recipient);
$('.dash').html(data);
$('#eventDetailsModal').modal("toggle");
}
else{
console.log("error");
}
});
});
EDIT:之所以只显示模式头,是因为<?php echo $postcodeFull ?>
正在完成AJAX请求。
$('a').on('click', function (event) {
var button = $(this); // Button that triggered the modal
var recipient = button.data('whatever'); // Extract info from data-* attributes
var modal = $("#eventDetailsModal");
var dataString = recipient;
$.ajax({
type: "GET",
url: "/getNearestPC.php",
data: {"foo": dataString},
cache: false,
success: function (data) {
console.log(data);
console.log(dataString);
console.log(recipient);
$('.dash').html(data);
},
error: function(err) {
console.log(err);
}
});
})
相关文章:
- InvalidOperationException:当应用程序未在UserInteractive模式下运行时显示模式对话
- 将JavaScript检测与MVC4显示模式集成的最佳方式是什么
- 如何显示模式而不是警报
- AngularJs:如何使用ng点击来显示模式引导
- 在表格最后一行(链接)中显示菜单,并在单击菜单项时显示模式窗口
- 使用非阻塞算法多次显示模式窗口
- 显示模式时删除滚动条
- 用户共享页面后显示模式
- ng重复自定义不同样式的显示模式
- CasperJS单击无法显示模式窗口
- 如何在通过 AJAX 提交后显示模式窗体
- 无法显示模式窗口
- 如何同时显示模式和执行操作
- PHP Yii-单击列表然后显示模式中单击的列表的完整数据
- 如何在网页中显示模式对话框
- 如何从IE和Chrome浏览器中的显示模式对话框窗口返回数组对象
- 在基础中打开另一个页面的部分显示模式
- 当选择了“选择”下拉列表中的选项时,将显示模式
- 第二个zurb显示模式窗口-可能
- 如何使用javascript在opera中显示模式弹出窗口