最近新项目使用了最新的 Yii 框架,版本为 2.0.15.1,由于封装返回 JSON 数据的模块直接搬用了之前老版本 Yii 的项目中的模块,导致了返回数据携带 yii\web\HeadersAlreadySentException 异常使得前端无法对返回数据正常解析的问题,问题代码如下:
protected function renderJson($data = [], $msg = "ok", $code=200) {
header("Content-type: application/json");
echo json_encode([
"code" => $code,
"msg" => $msg,
"data" => $data,
"req_id" => uniqid()
]);
return \Yii::$app->end();
}
我使用了 echo 对封装数据进行返回操作,这里应该改为:
protected function renderJSON($data=[], $msg ="ok", $code = 200) {
header('Content-type: application/json');
$jsonResult = json_encode([
"code" => $code,
"msg" => $msg,
"data" => $data,
"req_id" => uniqid()
]);
return $jsonResult;
}
这里只要通过变量返回封装好的数据就可以了。
参考资源: