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 错误。
这可能是重复的问题,但我已经尝试了所有可能的方法来解决 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 错误。