Ajax响应后window.location.href无法跳转问题求助
问题排查与解决
你的核心问题是后端返回的"success"未被前端正确匹配,导致跳转逻辑不执行,以下是具体排查和解决步骤:
1. 先确认后端返回的真实内容
在let data = xhr.response;后添加调试代码,查看实际拿到的返回值:
console.log('原始返回数据:', JSON.stringify(data));
这能帮你发现是否存在隐藏的空格、换行或其他字符(比如PHP文件的BOM头、多余空格输出)。多数情况下,PHP文件开头/结尾的空格、注释会让返回内容变成"success\n"或" success",导致data == "success"判断不成立。
2. 修正前端判断逻辑
如果确实存在空白字符,先对返回值做去空白处理,同时用严格相等判断避免隐式转换问题:
let data = xhr.response.trim(); // 去除首尾空格、换行等 if(data === "success"){ errorTxt.textContent = "Thuinsowofnd wsikenon"; window.location.href = 'users.php'; }
3. 检查后端PHP代码
确保signup.php成功时仅输出"success":
- 检查文件开头是否有BOM头(可通过VS Code等编辑器开启控制字符显示查看)
- 确保
echo "success";之后无多余空格、换行,也没有var_dump()、print_r()这类调试输出 - 若PHP中引入了其他文件,也要确认这些文件没有多余输出
修改后的代码示例
continueBtn.onclick = () =>{ let xhr = new XMLHttpRequest(); xhr.open("POST", "php/signup.php", true ); xhr.onload = () =>{ if(xhr.readyState === XMLHttpRequest.DONE && xhr.status === 200){ let data = xhr.response.trim(); console.log('处理后的数据:', data); // 调试用 if(data === "success"){ errorTxt.textContent = "Thuinsowofnd wsikenon"; window.location.href = 'users.php'; }else{ errorTxt.textContent = data; errorTxt.style.display = "block"; } } } let formData = new FormData(form); xhr.send(formData); }
内容的提问来源于stack exchange,提问作者Jackson Jackson
相关产品推荐
相关产品推荐

