使用 Sweet Alert 的 Toast 消息

问题描述 投票:0回答:1

我的 Toast 消息有问题。而不是在我填写表单提交后立即弹出 toast,即使我不提交表单提交,toast 也会继续出现,即使我来自另一个页面,我单击到此页面,toast 仍然会出现。除此之外,当我在基于 bard a.i 的代码中取消设置后,吐司根本不出现。

  • 这是来自 page1.php
<html>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.min.css">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/sweetalert2.min.js"></script>
</html>
<?php
    session_start();
    include 'config.php';
    
    if (isset($_SESSION['id_pensyarah'])) {
        $idpensyarah = $_SESSION['id_pensyarah'];
    
        if (isset($_POST['insertakademik'])) {
            $tahun = $_POST['tahunakademik'];
            $pencapaian = $_POST['pencapaianakademik'];
            $id_institusi = $_POST['id_institusi'];
            $institusi_baharu = $_POST['institusiakademikbaharu'];

            if ($institusi_baharu == null) {
                // Insert into akademik table directly using the selected id_institusi
                $sql1 = "INSERT INTO akademik (tahun, pencapaian, id_pensyarah, id_institusi) VALUES ('$tahun', '$pencapaian', '$idpensyarah', '$id_institusi')";
                $execute1 = mysqli_query($conn, $sql1);

                if ($execute1) {
                    $_SESSION['success_message'] = "Tambah Data Kelayakan Akademik dan Ikhtisas";
                    $_SESSION['redirect_token'] = uniqid();
                    header('Location: .././page2.php');
                } else {
                    echo 'Error execute1 data: ' . mysqli_error($conn);
                }
            } else {
                // Insert the new institution into institusi table first
                $sql2 = "INSERT INTO institusi (institusi) VALUES ('$institusi_baharu')";
                $execute2 = mysqli_query($conn, $sql2);
            
                if ($execute2) {
                    // Get the last inserted ID and insert into akademik table
                    $new_id_institusi = mysqli_insert_id($conn);
                    $sql3 = "INSERT INTO akademik (tahun, pencapaian, id_pensyarah, id_institusi) VALUES ('$tahun', '$pencapaian', '$idpensyarah', '$new_id_institusi')";
                    $execute3 = mysqli_query($conn, $sql3);

                    if ($execute3) {
                        $_SESSION['success_message'] = "Tambah Data Kelayakan Akademik dan Ikhtisas";
                        header('Location: .././page2.php');
                    } else {
                        echo 'Error execute3 data: ' . mysqli_error($conn);
                    }
                } else {
                    echo 'Error execute2 data: ' . mysqli_error($conn);
                }

            }
        }
    }
    
    
?>
  • 这是来自 page2.php
<!-- Toast Insert Data Successfully -->
<?php
        if (isset($_SESSION['success_message']) && isset($_SESSION['redirect_token'])) {
            echo "<script>
                Swal.fire({
                    position: 'top-end',
                    toast: true,
                    icon: 'success',
                    title: '" . $_SESSION['success_message'] . "',
                    text: 'Berjaya!',
                    showConfirmButton: false,
                    timer: 3000,
                    timerProgressBar: true,
                    backgroundColor: '#28a745',
                    titleColor: '#fff',
                })
                .then((result) => {
                    // Clear the session variable after toast is dismissed (using AJAX)
                    $.ajax({
                        url: 'clear_session.php',
                        success: () => {
                            console.log('Session cleared successfully');
                        }
                    });
                });
            </script>";
        }
?>

我希望在我从另一个页面提交表单后立即弹出 toast。提交表单后,表单将转到下一个位置,然后弹出 toast。我希望你们能尽快帮助我。谢谢。

javascript php toast sweetalert
1个回答
0
投票

您可以在输入 if 条件块后立即清除会话,而不是调用 ajax 来清除会话,例如使用以下内容

unset($_SESSION['success_message']);
unset($_SESSION['redirect_token']);

因此对于第 2 页,更改为

<?php
session_start();

if (isset($_SESSION['success_message']) && isset($_SESSION['redirect_token'])) {

unset($_SESSION['success_message']);
unset($_SESSION['redirect_token']);

            echo "<script>
                Swal.fire({
                    position: 'top-end',
                    toast: true,
                    icon: 'success',
                    title: '" . $_SESSION['success_message'] . "',
                    text: 'Berjaya!',
                    showConfirmButton: false,
                    timer: 3000,
                    timerProgressBar: true,
                    backgroundColor: '#28a745',
                    titleColor: '#fff',
                })
                .then((result) => {

                });
            </script>";
     
// rest of your code

© www.soinside.com 2019 - 2024. All rights reserved.