在重定向后使用会话创建弹出消息是行不通的

时间:2019-03-05 21:14:26

标签: javascript php jquery

首先,我想提一提,这是我第一次在这里创建线程,所以对不起,如果我做错了什么。

无论如何,我正在使用自己的论坛系统,因此得出的结论是,无论用户是成功消息还是失败消息,我都需要在用户操作后显示弹出消息。我需要在论坛上使用该系统。

我已经进行了大量研究,并尝试了许多方法来获得这种类型的系统,但在我看来,最有意义的方法是使用会话作为触发器并存储消息本身。

事不宜迟,这就是我想出的:

function popupMessage(){
    setTimeout(function(){ 
        setTimeout(function(){ 
            $('.popup_message').remove('');
        }, 3000); 
        $('.popup_message').fadeOut();
    }, 3000);
    $('.header').append('<div class="popup_message success"><span><i class="fa fa-fw fa-check-circle"></i></span><p>success</p></div>');
}

此功能在我的js文件中,该文件包含我的所有功能。

if(isset($_SESSION['message'])){
    $message = $_SESSION['message'];
    echo '
        <script src="https://code.jquery.com/jquery-3.3.1.min.js" integrity="sha256-FgpCb/KJQlLNfOu91ta32o/NMZxltwRo8QtmkMRdAu8=" crossorigin="anonymous"></script>
        <script type="text/javascript" src="/assets/myscripts.js"></script>
        <script type="text/javascript">
            var message = \''.$message.'\';
            popupMessage()
        </script>';
    unset($_SESSION['message']);
}

该段代码已归档,并包含在我论坛的每个页面的标题中。

$_SESSION['message'] = 'success!';
header("Location: $location");

以这两个行为例,当提交表单时。

我现在有点被困,我不知道该怎么办,我会告诉你为什么,功能popupMessage()本身可以正常工作,但是当我通过它调用时,它将根本无法工作if(isset($_SESSION['message']))条件。 同样重要的是要补充一点,当我尝试用简单的alert()替换函数调用时,它工作正常,这意味着已设置消息,但是当函数通过beeing调用时,函数将不会运行条件。

顺便说一句,我想很明显,javascript或jquery并不是我的强项,我对这些还不是很陌生,所以对不起,如果我让您的眼睛受伤或有其他任何伤害。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

由于操作的顺序,您需要确保在DOM中创建弹出消息的HTML的位置下面调用popupMessage()。否则,您可以像这样

$(document).ready();函数中加载它
$(document).ready(function() {
  popupMessage();
});

确保在执行JS之前存在HTML元素。