AJAX解析PHP返回JSON报错:Unexpected token 'o',求解决方案
问题排查与修复:AJAX JSON解析错误
错误根源
你的PHP代码存在两个核心问题:
- 多次输出JSON:连续调用
echo json_encode()会生成多个独立的JSON字符串(例如{"error":"login"}{"a":"b"}),这不符合JSON语法规范,前端解析时必然失败。 - 逻辑冗余:即使检测到登录名重复,第二个邮箱检查循环仍会执行,且最后强制输出额外的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
相关产品推荐
相关产品推荐

