You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Sweet Alert实现Toast消息异常问题及需求咨询

Sweet Alert Toast 异常问题解决(仅表单提交后跳转显示)

问题根源

  1. session变量未及时清除:原代码依赖AJAX异步清除session,存在延迟,若用户在Toast消失前刷新页面,session变量仍保留,导致非表单跳转时错误触发Toast;
  2. 代码分支遗漏:page1.php中,新增机构后插入学术数据的成功分支未设置$_SESSION['redirect_token'],导致该场景下无法触发Toast;
  3. session初始化缺失:page2.php未显式调用session_start(),可能导致session读取异常,引发Toast显示不稳定;
  4. 清除时机不合理:AJAX清除逻辑无法保证session变量在页面首次加载后立即失效,导致重复触发。

解决方案

  1. 统一设置跳转标识:在page1.php所有表单提交成功的分支中,都添加redirect_token的设置;
  2. 显式初始化session:在page2.php开头添加session_start(),确保session可正常读取;
  3. 同步清除session变量:在输出Toast脚本前,先读取session内容,然后立即清除相关变量,确保Toast仅触发一次;
  4. 移除异步清除逻辑:取消AJAX清除session的代码,避免异步操作带来的不确定性。

修改后的代码示例

page1.php 关键修复部分

// ... 原有代码 ...
if ($execute3) {
    $_SESSION['success_message'] = "Tambah Data Kelayakan Akademik dan Ikhtisas";
    $_SESSION['redirect_token'] = uniqid(); // 补充该行,与第一个成功分支保持一致
    header('Location: .././page2.php');
}
// ... 原有代码 ...

page2.php 完整修改代码

<?php
session_start();
$showToast = false;
$toastContent = '';

// 校验并读取session数据
if (isset($_SESSION['success_message']) && isset($_SESSION['redirect_token'])) {
    $showToast = true;
    $toastContent = $_SESSION['success_message'];
    
    // 立即清除session,防止重复触发
    unset($_SESSION['success_message'], $_SESSION['redirect_token']);
}
?>

<!-- Toast 显示逻辑 -->
<?php if ($showToast): ?>
<script>
Swal.fire({
    position: 'top-end',
    toast: true,
    icon: 'success',
    title: '<?php echo $toastContent; ?>',
    text: 'Berjaya!',
    showConfirmButton: false,
    timer: 3000,
    timerProgressBar: true,
    backgroundColor: '#28a745',
    titleColor: '#fff',
});
</script>
<?php endif; ?>

注意事项

  • session_start()必须放在page2.php的最开头,不能有任何输出(包括空格、HTML标签)在它之前,否则会触发"headers already sent"错误;
  • 清除session变量的操作必须在输出Toast脚本之前完成,确保页面刷新后不会重复显示;
  • 所有表单提交成功的分支都要设置redirect_token,避免部分提交场景下Toast不生效。

内容的提问来源于stack exchange,提问作者Efannnnnn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 18:02:06