Javascript 除非有伪echo语句,否则不会调用Sweet警报

Javascript 除非有伪echo语句,否则不会调用Sweet警报,javascript,sweetalert,Javascript,Sweetalert,我有一个使用Sweet Alert的非常奇怪的bug。希望有人能提供一些故障排除建议。请观看视频以了解其奇怪之处。我也将在下面简要描述它: 它是代码的用户登录部分的一部分 该函数调用Sweet Alert以提供弹出式警报。当我插入一个伪echo语句(如echo-LOGIN)时,它就会工作;我得到了弹出窗口。如果不在,则不会弹出窗口。代码如下: function prepLogin ($id, $username, $remember, $email){ $_SESSION['id'] =

我有一个使用Sweet Alert的非常奇怪的bug。希望有人能提供一些故障排除建议。请观看视频以了解其奇怪之处。我也将在下面简要描述它:

它是代码的用户登录部分的一部分

该函数调用Sweet Alert以提供弹出式警报。当我插入一个伪echo语句(如echo-LOGIN)时,它就会工作;我得到了弹出窗口。如果不在,则不会弹出窗口。代码如下:

function prepLogin ($id, $username, $remember, $email){
    $_SESSION['id'] = $id;
    $_SESSION['username'] = $username;
    $_SESSION['email'] = $email;

    $fingerprint = md5($_SERVER['REMOTE_ADDR'] . $_SERVER['HTTP_USER_AGENT']);
    $_SESSION['last_active'] = time();
    $_SESSION['fingerprint'] = $fingerprint;

    if($remember === "yes"){
        rememberMe($id);
    }
    //call sweet alert 
    //echo 'REACHED PREP LOGIN'.'<br>';
    echo $welcome = "<script type=\"text/javascript\">
                            swal({
                            title: \"Welcome back $username!\",
                            text: \"You're being logged in.\",
                            type: 'success',
                            timer: 3000,
                            showConfirmButton: false });
                            setTimeout(function(){
                               window.location.href = '../../index.php';
                            }, 3000);
                        </script>";
}

对我来说没有任何意义为什么echo语句会使脚本函数无效。。。一定有办法解决这个问题。任何帮助都将不胜感激

如果打开控制台,您将看到Sweat Alert中的一个错误,它表示在dom完全加载之前正在注入。如果你像这样把你的叫声包起来

    echo $welcome = "<script type=\"text/javascript\">

document.addEventListener(\"DOMContentLoaded\", function(){
                            swal({
                            title: \"Welcome back $username!\",
                            text: \"You're being logged in.\",
                            type: 'success',
                            timer: 3000,
                            showConfirmButton: false });
                            setTimeout(function(){
                               window.location.href = '../../index.php';
                            }, 3000);
});
                        </script>";
然后,直到整个dom加载完毕,swal才会开火。我猜当您添加另一个echo语句时,它会在运行脚本标记之前呈现整个dom