PHP中点击Delete按钮跳转至Update页面的异常问题排查
解决Delete按钮跳转到Update页面的问题
看起来你遇到的问题是点击Delete按钮后,明明链接指向的是do=Delete,却跳转到了Update页面,我来帮你一步步排查:
首先确认实际请求的URL
点击Delete按钮时,先盯着浏览器地址栏看一下,实际加载的URL是不是真的包含do=Delete?有时候可能因为JS弹窗的干扰,或者链接生成时的小问题(比如$cat['ID']为空,但do参数应该还是存在的),先确认前端传递的参数是对的。
检查categories.php的逻辑判断
这是最常见的问题根源——服务器端对do参数的判断逻辑出了问题:
- 如果你用的是
if-elseif结构,很可能是判断顺序错了。比如你先判断了do=Update或者do=Edit,然后把Delete的判断放在了错误的分支里,甚至不小心用了else来处理Delete,导致其他情况都走了Update?
举个反例(错误的写法):
正确的写法应该是给每个if (isset($_GET['do']) && $_GET['do'] == 'Edit') { // 编辑页面逻辑 } elseif (isset($_GET['do']) && $_GET['do'] == 'Update') { // 更新处理逻辑 } else { // 这里如果是Delete的逻辑,那如果do=Delete的话,会不会因为前面的条件没匹配?不对,应该单独判断Delete! }do值单独做判断,比如用switch-case更清晰:if (isset($_GET['do'])) { switch ($_GET['do']) { case 'Edit': // 编辑页面逻辑 break; case 'Delete': // 你的//Delete Member Pag...删除逻辑 break; case 'Update': // 更新处理逻辑 break; default: // 默认页面逻辑 break; } } - 另外要注意用**严格相等
===**代替==,避免类型转换导致的匹配错误,比如如果do参数被意外转成了整数类型,==会误匹配。
排查JS事件的干扰
你的Delete按钮有confirm类,应该是绑定了确认弹窗的JS代码。可以先暂时去掉这个类,点击Delete按钮看看是否正常跳转——如果正常了,说明是JS代码的问题:
- 检查JS里有没有错误修改跳转地址的逻辑,比如弹窗确认后不小心指向了Edit的链接;
- 或者
e.preventDefault()的逻辑写错了,导致默认跳转被阻止,反而触发了其他事件。
清除浏览器缓存
有时候浏览器会缓存旧的页面内容(虽然PHP是动态的,但如果有缓存头设置的话),按Ctrl+F5强制刷新页面,再测试Delete按钮,排除缓存的影响。
调试参数接收情况
可以在categories.php的最开头加一行调试代码,看看服务器实际接收到的do参数是什么:
<?php // 调试用,测试完可以删掉 echo "当前接收的do参数:" . ($_GET['do'] ?? '未设置'); ?>
这样就能直接看到服务器端拿到的参数是不是和你URL里的一致,帮助定位问题。
内容的提问来源于stack exchange,提问作者Moo Madien
相关产品推荐
相关产品推荐

