Headers Already sent Yii2 错误,无法使用任何建议的方法解决

Headers Already sent Yii2 error, unable to resolve it using any of the suggested methods

这可能是重复的问题,但我已经尝试了所有可能的方法来解决 Yii2 中的这个错误,但没有成功

我有我的基本控制器和功能,如下所示

     /**
     * Send given object as json object
     *
     * @param array $data
     * @return json
     */
    public function sendJsonResponse($data) {
        ob_start();
        ob_clean();
        header('Content-type: application/json');
        echo json_encode($data);
        die;
    }

我在任何子控制器中调用此函数,例如

return $this->sendJsonResponse(['message'=>'Some message here','status'=>true]);

有了这个,我总是得到 headers already sent 错误,尝试了 Yii2 社区建议的方法将 echo 更改为 return 等,但徒劳无功。

求推荐。

尝试使用 return 而不是 echo 并避免 die()

public function sendJsonResponse($data) {
    ob_start();
    ob_clean();
    header('Content-type: application/json');
    return json_encode($data);
}

无论如何检查你的控制器中是否有其他 return od echo 代码的其他部分中的其他值并重构你的代码以避免这个。你应该一次发送所有值 return

@ScaisEdge,感谢您的回答,由于某些奇怪的原因,每当我们使用 ajax 时,您建议的方法都不会产生预期的结果,不知道为什么如此修改我的方法,如下所示

/**
 * Send given object as json object
 *
 * @param array $data
 * @return json
 */
public function sendJsonResponse($data) {
    \Yii::$app->response->format = \yii\web\Response::FORMAT_JSON;
    return $data;
}

这按预期工作,我将post确认这是否解决了我最初遇到的 headeralreadysent 错误。