PHP接口没返回数据,很可能是响应头缺失导致的;需在输出前用header('Content-Type: application/json; charset=utf-8')声明类型,并确保无空格、BOM、多余换行等提前输出。

PHP接口没返回数据,很可能是响应头缺失导致的。浏览器或客户端默认按HTML解析,而API应返回JSON等纯数据格式,必须用header()明确声明内容类型。
设置正确的Content-Type头
最常见原因是没告诉客户端“我返回的是JSON”。在输出数据前加这行:
header('Content-Type: application/json; charset=utf-8');这样前端(如JavaScript的fetch)才能正确解析为对象,而不是当作字符串或HTML处理。
避免输出前有意外字符
header必须在任何实际输出之前调用。检查是否有以下情况:
立即学习“PHP免费学习笔记(深入)”;
- PHP文件开头有空格、BOM字符或echo/print语句
- 包含的配置文件末尾有多余换行或空行
- 使用了短标签
且服务器未启用,导致裸露的被当作文本输出
确保数据已正确编码并输出
设置了header后,还要确认真正输出了内容:
- 用
json_encode()转换数组,别直接echo $array - 加上
JSON_UNESCAPED_UNICODE避免中文变\uXXXX - 最后用
exit或die防止后续代码干扰输出
示例:
header('Content-Type: application/json; charset=utf-8');echo json_encode(['code' => 0, 'data' => ['name' => '张三']], JSON_UNESCAPED_UNICODE);
exit;
调试小技巧
如果仍无返回,临时加两行辅助判断:
error_reporting(E_ALL);ini_set('display_errors', '1');
再用浏览器开发者工具的Network面板看响应状态码和原始响应体,能快速定位是500错误、空白响应,还是header被覆盖等问题。



















