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

PHP JSON解析错误:浏览器无数据及代码问题排查

排查PHP输出JSON解析错误、浏览器无数据的问题

我来帮你梳理下代码里导致JSON解析失败的几个关键问题:

  • 额外输出破坏JSON结构:你在while循环里加了echo $num;,这会在最终的JSON数据前打印出一串数字(比如0、1、2...)。JSON要求输出必须是纯的JSON格式,任何额外的字符(包括这些数字、PHP报错信息)都会让前端JSON解析器直接报错,浏览器自然无法正常显示数据。

  • 代码语法不完整:最后一行echo json_encode(ar...明显没写完,这会触发PHP语法错误,错误信息会被输出到页面,直接打乱了JSON的格式。你应该是想写echo json_encode($response);对吧?

  • 缺少JSON响应头:没有设置Content-Type: application/json响应头,浏览器可能会把返回内容当成普通文本,前端在解析时也容易出现识别错误。

  • 字符编码潜在问题:如果数据库里包含中文或其他非ASCII字符,而数据库连接编码不是UTF-8,json_encode会返回false,导致输出空内容或报错。需要确保连接后设置正确的编码。

修正后的完整代码示例

<?php
// 开发环境开启错误提示,方便排查问题
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(E_ALL);

// 建立数据库连接
$con = mysqli_connect("localhost", "alsmwsk3", "skrktkzl12", "alsmwsk3");
// 检查连接是否成功
if (!$con) {
    header('Content-Type: application/json');
    echo json_encode(["error" => "数据库连接失败: " . mysqli_connect_error()]);
    exit;
}
// 设置数据库编码为utf8mb4,支持所有Unicode字符(包括emoji)
mysqli_set_charset($con, "utf8mb4");

// 执行查询
$result = mysqli_query($con, "SELECT * FROM NOTICE ORDER BY noticeDate DESC");
if (!$result) {
    header('Content-Type: application/json');
    echo json_encode(["error" => "查询失败: " . mysqli_error($con)]);
    exit;
}

$response = [];
while ($row = mysqli_fetch_array($result)) {
    // 建议用字段名而非索引,代码更易维护(替换成你表中实际的字段名)
    array_push($response, [
        "noticeContent" => $row['noticeContent'],
        "noticeName" => $row['noticeName'],
        "noticeDate" => $row['noticeDate']
    ]);
    // 移除echo $num; 这行额外输出
}

// 设置响应头为JSON类型
header('Content-Type: application/json');
// 输出最终的JSON数据
echo json_encode($response);

// 关闭数据库连接
mysqli_close($con);
?>

额外提示

  • 用字段名代替数组索引(比如$row['noticeContent']而非$row[0]),这样即使表结构调整,代码也不容易出错。
  • 开发环境开启错误提示能快速定位语法或数据库错误,上线后记得关闭。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:56:05