Сладкая тревога не будет вызвана, если на месте не будет подставного эхо - PullRequest
0 голосов
/ 10 мая 2018

У меня очень странная ошибка при использовании Sweet Alert. Надеясь, кто-то может предоставить некоторые предложения по устранению неполадок Пожалуйста, посмотрите видео здесь , чтобы увидеть его странность. Я также кратко опишу это ниже:

Это часть пользовательского логина.

Функция вызывает Sweet Alert для всплывающего предупреждения. Это работает, когда я вставляю фиктивный оператор эха, такой как echo "REACHED PREP 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 мог бы аннулировать функцию сценария ... Должен быть способ устранить это. Любая помощь будет оценена!

1 Ответ

0 голосов
/ 10 мая 2018

Если вы откроете консоль, вы увидите ошибку от 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>";

Тогда ласточка не будет стрелять, пока весь дом не будет загружен. Я предполагаю, что когда вы добавили еще один оператор echo, он рендерит весь dom до запуска тега script.

...