我有一个使用PHP循环在我的页面上回显的用户列表。当我单击每个用户的名称时,会弹出Bootsrap Modal并显示用户的更多详细信息。链接看起来像这样。
<a href="#user" data-toggle="modal" data-id="{$user['id']}">UserName</a>
如您所见,我将用户的ID传递给Bootstrap模式,以便我可以通过调用Bootstrap模式中的get_user_by_id()
来使用它来检索用户的其他信息。
模态看起来像这样
<div class="modal fade" id="user">
<div class="modal-header">
<button class="close" data-dismiss="modal">×</button>
<h3>Modal header</h3>
</div>
<div class="modal-body">
<?php
$user = get_user_by_id($id);
?>
<input type="text" name="bookId" id="bookId" value=""/>
</div>
</div>
JS代码就像这样
$('#user').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget)
var id = button.data('id')
})
根据上面的JS代码,我在var id
变量中有我的用户ID。
但是,我无法想象如何将上述PHP函数的值用作参数。
有没有可行的办法呢?
我已经编辑了一个关于AJAX方法更独特的问题,其中大多数答案都基于AJAX
PS:我是PHP和Bootstrap的新手。
答案 0 :(得分:3)
您将需要使用ajax来运行PHP。由于@Tom声明javascript在DOM中加载后无法访问PHP。 PHP是一种服务器端语言,只能这样访问。
通过ajax连接到PHP之后,您可以使用返回的内容加载div
。只有在加载内容之后,如果您打开模式,否则您将看到显示的框的外观,然后显示内容。
基本示例
$(".btn").click(function(){
// AJAX code here.
$.ajax(
....
success: function($data){
$('.target').html(data)
$("#myModal").modal('show');
}
);
});
答案 1 :(得分:1)
以这种方式你想要解决这个问题是不可能的。因为要从PHP中获取服务器中的数据,您必须向服务器请求,最好的方法是提交表单。在这里,您希望以模态显示数据,因此您需要异步执行此操作。所以你可以尝试这样 -
//keep a button to show the modal for user details
<button class="detail" data-toggle="modal" data-target="#user_modal" data-id="<?= $user->id ?>">Detail</button>
//and using jQuery on the click of the above button post a form to your desire url
$(document).on("click", ".detail", function () {
var id = $(this).data('id');
$.ajax({
type: "POST",
url: "your/url",
data: { id: id},
success: function(data) {
//and from data you can retrive your user details and show them in the modal
}});
});
答案 2 :(得分:0)
Bootstrap模式允许你加载一个远程页面,这就是你要找的东西我相信......
<a href="userdata.php?uid=<?php echo $user['id']?>" data-target="#user" data-toggle="modal" data-id="{$user['id']}">UserName</a>
然后模态变为:
<div class="modal fade" id="user" tabindex="-1" role="dialog" aria-labelledby="user" aria-hidden="true"><div class="modal-dialog modal-lg"><div class="modal-content"></div></div></div>
和userdata.php
<?php
$user_id = $_GET['uid'];
$user = get_user_by_id( $user_id );
?>
<div class="modal-header">
HEADER STUFF GOES HERE
</div>
<div class="modal-body">
USER INFO GOES HERE
</div>
<div class="modal-footer">
MODAL FOOTER HERE
</div>
答案 3 :(得分:-1)
Bootstrap模式有一个选项远程,但在Bootstrap v3.3.0上已弃用,将在v4中删除。您可以使用jQuery.load。 例如
$( "#some-click" ).on('click', function() {
var userId = button.data('id'); //get user id here
//jQuery.load set html with modal and user details by id
$( "#user" ).load( "/not-here.php", { id:userId });
});