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

如何在PHP MVC架构下去除Ajax返回JSON响应中的多余HTML标签

问题原因

MVC框架默认会在控制器逻辑执行完成后自动加载布局、视图模板(比如公共页头、页脚、导航等HTML内容),你在模型中输出JSON后没有终止程序,框架后续的视图渲染逻辑就会把HTML内容追加到JSON后面,导致响应格式异常。

解决步骤

  • 输出JSON后立即终止程序执行,阻止后续视图渲染
  • 主动设置JSON格式的响应头,避免客户端或框架自动注入额外内容
  • 排查全局公共加载逻辑、钩子函数,给JSON接口跳过HTML视图加载的规则
  • 清空输出缓冲区,避免提前输出的空格、报错信息混入响应

修改后的代码示例

调整后的模型方法

public function select(){
    $select_query = $this->db->prepare("SELECT * FROM table_name");
    $select_query->execute();
    $row = $select_query->fetchAll(PDO::FETCH_ASSOC);
    // 清空之前的输出缓冲区
    ob_clean();
    // 设置JSON响应头
    header('Content-Type: application/json; charset=utf-8');
    echo json_encode($row, JSON_UNESCAPED_UNICODE);
    // 终止程序,防止后续输出HTML
    exit;
}

调整后的控制器逻辑(也可以在控制器层做终止处理)

$dashboard = new obj();  // 实例化包含select方法的模型类
ob_clean();
header('Content-Type: application/json; charset=utf-8');
$dashboard->select();
exit;

额外排查点

如果修改后还是有多余内容,检查代码中是否有其他echo、var_dump等打印语句,同时关闭接口场景下的display_errors配置,避免PHP报错、警告信息混入响应内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 16:54:04