输入正确信息后无法跳转至验证页面,该如何解决?
注册成功后无法跳转至验证页面的问题解决
问题根源
后端PHP返回的字符串和前端JS的判断条件不匹配:
- PHP代码里输出的是
"Success."(首字母大写,末尾带句号) - JS里判断的是严格等于
"success"(全小写,无句号)
这种不一致导致跳转逻辑永远不会触发,只会把返回的"Success."当作错误信息显示。
修复方案(二选一即可)
方案1:修改PHP代码,让返回内容匹配JS判断
把PHP里的输出语句改成全小写且不带句号:
if($otp){ $receiver = $email; $subject = "From: $name <$name>"; $body = "Name "." $name \n Email "." $email \n "." $otp"; $sender = "From: xxxxxxxxxxxx@gmail.com"; if(mail($receiver,$subject,$body,$sender)){ echo "success"; // 修正为全小写,去掉末尾句号 } }
方案2:修改JS代码,兼容后端返回的格式
对后端返回的内容做预处理,去除空格并转小写后再判断:
submitbtn.onclick = () =>{ let xhr = new XMLHttpRequest(); xhr.open("POST","./signup.php" ,true); xhr.onload = () => { if(xhr.readyState === XMLHttpRequest.DONE){ if(xhr.status == 200){ let rawData = xhr.response; let processedData = rawData.trim().toLowerCase(); if(processedData === "success"){ location.href = "./verify.php" } else{ errortxt.textContent = rawData; errortxt.style.display = "block"; } } } } let formData = new FormData(form); xhr.send(formData); }
额外提示
登录和验证页面的同类问题,基本也是相同原因——检查后端返回的字符串和前端判断条件是否完全一致(包括大小写、标点、空格),调整两边使其匹配即可。

内容的提问来源于stack exchange,提问作者emptyfinest1
相关产品推荐
相关产品推荐

