PHP实现重定向后自动刷新目标页面的方法求助
解决PHP删除后重定向页面不自动更新的问题
问题原因
当前用JavaScript的window.location跳转时,浏览器可能缓存了new_card.php的页面内容,导致删除后看不到最新结果,需要手动刷新。下面提供两种可靠的解决方法:
方案一:改用PHP服务器端重定向(推荐)
直接在PHP中用header()函数实现重定向,这是服务器端跳转,会强制浏览器重新请求目标页面,彻底避免缓存问题。
修改delete_Cards_New.php代码:
<?php include '../connect.php'; $sql = "DELETE FROM the_table_new WHERE id_img_et_contenu = :id_img_et_contenu"; $request = $bdd->prepare($sql); $request->bindParam(':id_img_et_contenu', $_GET['id'], PDO::PARAM_INT); $request->execute(); // 服务器端重定向,必须在任何输出(HTML/空格)之前调用 header("Location: ../new_card.php"); exit; // 终止后续代码执行,确保跳转生效 ?>
⚠️注意:header()函数必须在**任何输出内容(包括PHP标签外的空格、HTML代码)**之前调用,否则会报错。
方案二:优化JavaScript重定向(强制刷新)
如果必须保留JS跳转,可以通过添加随机参数或强制刷新的方式,让浏览器重新获取页面:
方法1:添加随机时间戳参数
window.location = "../new_card.php?t=" + new Date().getTime();
通过给URL添加唯一的时间戳,让浏览器认为是新请求,避免使用缓存内容。
方法2:跳转后强制刷新
window.location.replace("../new_card.php"); setTimeout(() => { window.location.reload(true); // true表示强制从服务器拉取最新数据 }, 100);
额外优化:禁止new_card.php缓存
在new_card.php的最顶部添加禁止缓存的响应头,确保每次访问都获取最新数据:
<?php // 禁止浏览器和代理缓存页面 header("Cache-Control: no-cache, no-store, must-revalidate"); header("Pragma: no-cache"); header("Expires: 0"); ?>
内容的提问来源于stack exchange,提问作者user16995764
相关产品推荐
相关产品推荐

