You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 00:45:41