因此在其中一页上,我有:(第一页)
if (isset($_SESSION['isSuspend'])){
echo '<script>$("#SuspendModal").modal("show");</script>';
unset($_SESSION['isSuspend']);
}
在同一页面上,我有模式:
<div class="modal" tabindex="-1" role="dialog" id="SuspendModal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Suspension System</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p><?php echo $_SESSION['isSuspend']; ?></p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Okay</button>
</div>
</div>
</div>
</div>
和另一页上:(第二页)
if ($conn->query($sql) === TRUE){
$_SESSION['isSuspend'] = "You have suspended ".$user_id."!";
header("Location: ../admin/edit.php?user=$user_id");
} else {
echo "DEBUG: Error: ".$sql."<br>".$conn->error;
}
我的问题是,在我单击“暂停”按钮的第一页上,它将直接指向suspend.php,这是第二页,如果成功将其添加到数据库中,则会将会话var设置为所述字符串。但是,当它返回到第一页时,尽管被调用,引导模式也不会打开。我在做什么错了?
答案 0 :(得分:3)
您可以使用jQuery
进行此操作。
HTML
<div class="modal" tabindex="-1" role="dialog" id="SuspendModal">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">Suspension System</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p>asd</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-primary" data-dismiss="modal">Okay</button>
</div>
</div>
</div>
</div>
jQuery
<script>
$(document).ready(function(){
$("#SuspendModal").modal();
});
</script>
上面的代码将在页面加载后打开您的模式。
您可以进行几项检查,以增加对何时打开模式的要求:
示例
<?php if($_SESSION['something'] == 'something'): ?> // You can also do it on $_POST / $_GET / $array / $string etc.
<script>
$(document).ready(function(){
$("#SuspendModal").modal();
});
</script>
<?php endif; ?>
我个人更喜欢停止PHP
而不是回显您的脚本和内容。
所以代替:
if (isset($_SESSION['isSuspend'])){
echo '<script>$("#SuspendModal").modal("show");</script>';
unset($_SESSION['isSuspend']);
}
我会这样做的:
<?php if (isset($_SESSION['isSuspend'])): ?>
<script>
$("#SuspendModal").modal("show");
</script>
<?php unset($_SESSION['isSuspend']);
endif; ?>
对我而言,阅读代码并最终调试/改进脚本要容易得多。 (PHPStorm中的ATLEAST)
额外注释2
对于模态,您可能还想知道的另一件事是
可能发生某些CSS
设置未正确解析的情况。我最终通过删除tabindex="-1"
来解决了这个问题。只是一个小注意:-)。
文档:
答案 1 :(得分:1)
我认为您的脚本的问题是它不会在加载时被调用 要在加载时执行脚本,您需要这样做
if (isset($_SESSION['isSuspend'])){
echo '<script>$(window).on("load",function(){ $("#SuspendModal").modal("show"); }</script>';
unset($_SESSION['isSuspend']);
}
通过这种方式,页面加载后将执行显示模式脚本。
答案 2 :(得分:1)
也许您是在页面开头编写此php代码
if (isset($_SESSION['isSuspend'])){
echo '<script>$("#SuspendModal").modal("show");</script>';
unset($_SESSION['isSuspend']);
}
那个时候DOM不会被完全加载,所以最好在脚本中写成这样的代码
<script>
$(document).ready(function(){
var session='<?php echo $_SESSION['isSuspend']; ?>'
if(session){
$("#SuspendModal").modal("show");
}
});
</script>