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

AJAX解析PHP返回JSON报错:Unexpected token 'o',求解决方案

问题排查与修复:AJAX JSON解析错误

错误根源

你的PHP代码存在两个核心问题:

  1. 多次输出JSON:连续调用echo json_encode()会生成多个独立的JSON字符串(例如{"error":"login"}{"a":"b"}),这不符合JSON语法规范,前端解析时必然失败。
  2. 逻辑冗余:即使检测到登录名重复,第二个邮箱检查循环仍会执行,且最后强制输出额外的JSON内容,进一步破坏响应格式。

修复后的PHP代码

调整逻辑,只生成并输出一次合法的JSON响应:

// 初始化默认响应
$response = ['error' => 'no'];
$failed = false;

// 先检查登录名是否重复
for ($i = 0; $i < $size; $i++) {
    if ($users->user[$i]->login == $_POST['login']) {
        $response['error'] = 'login';
        $failed = true;
        break;
    }
}

// 登录名未重复时,再检查邮箱
if (!$failed) {
    for ($i = 0; $i < $size; $i++) {
        if ($users->user[$i]->email == $_POST['mail']) {
            $response['error'] = 'email';
            $failed = true;
            break;
        }
    }
}

// 设置正确的响应头,统一输出JSON
header('Content-Type: application/json');
echo json_encode($response);

额外注意事项

  • 确保PHP脚本没有输出任何无关内容(比如空格、调试信息、PHP错误提示),这些都会导致JSON解析失败。
  • 新增header('Content-Type: application/json')可以明确告诉浏览器响应类型,避免MIME识别异常。

内容的提问来源于stack exchange,提问作者kirvel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 19:45:40