点击SET按钮后Sweetalert不弹出但数据可正常更新的问题排查求助
SweetAlert弹窗不显示问题排查与解决
可能的原因
- 未正确引入SweetAlert对应的CSS、JS依赖,或依赖加载顺序晚于弹窗执行代码
- 未开启会话:所有用到
$_SESSION变量的页面没有在代码最顶部加session_start(),导致session值无法正常传递 - 跳转路径不匹配:
updataStatus.php中数据处理完成后跳转到了tracking.php,但弹窗逻辑写在了index.php中,跳转后不会触发index里的弹窗代码 - 缺少必要的session参数:弹窗代码中用到了
$_SESSION['status_code'],但updataStatus.php中只赋值了$_SESSION['success'],没有给status_code赋值,导致JS参数异常,SweetAlert无法正常渲染 - SweetAlert语法与使用版本不匹配:如果使用的是SweetAlert2,语法为
Swal.fire()而非旧版的swal(),语法错误会导致执行失败
解决步骤
- 确认SweetAlert依赖正确引入
在页面的<head>标签内或<body>标签末尾引入对应版本的SweetAlert资源,确保引入代码在弹窗执行的JS代码之前。 - 开启会话支持
在updataStatus.php、index.php(或跳转目标tracking.php)的代码最顶部(所有输出之前)添加:
<?php session_start(); ?>
- 匹配跳转路径与弹窗位置
如果你希望跳转回index页面显示弹窗,将updataStatus.php里的跳转语句修改为:
header('Location: index.php');
如果确实要跳转到tracking.php,把index.php里的那段弹窗PHP+JS代码迁移到tracking.php的合适位置。
4. 补充status_code参数赋值
修改updataStatus.php里的逻辑,补充status_code的赋值:
if($query_run){ $_SESSION['success'] = "YOUR DATA UPDATED"; $_SESSION['status_code'] = "success"; // 新增参数 header('Location: index.php'); // 按需修改跳转地址 }else{ $_SESSION['success'] = "YOUR DATA IS NOT UPDATED"; $_SESSION['status_code'] = "error"; // 新增参数 header('Location: index.php'); // 按需修改跳转地址 }
- 适配对应版本的SweetAlert语法
如果使用的是SweetAlert2,将弹窗代码修改为对应语法:
Swal.fire({ title: "<?php echo $_SESSION['success']; ?>", icon: "<?php echo $_SESSION['status_code']; ?>", confirmButtonText: "yissh", });
内容的提问来源于stack exchange,提问作者student who need help
相关产品推荐
相关产品推荐

