DEVELOPERS BLOGデベロッパーズブログ

  1. HOME > 
  2. 加藤 正人のデベロッパーズブログ > 
  3. CakePHP3 の JSON 出力でエラー

加藤 正人のデベロッパーズブログ

加藤 正人

氏名
加藤 正人
役職
多分SE
血液型
秘密
出没
美味しいもののあるところ
特色
タヒチ大好き。ちょいメタボ。

加藤 正人

2018/12/03

CakePHP3 の JSON 出力でエラー

 

CakePHP3 のサイトで ajax 呼び出しに対するコントローラを作成し、JSON データを返す仕組みをよく使う。

これまで小さなデータを扱う際には問題なかったのだが、今回少々大きなデータを JSON 形式で返そうとしたら、受け取り側の jQuery.ajax() で fail 動作になってしまうことに気づいた。

WireShark (パケットアナライザ) でデータをチェックしてみたところ、本来の JSON データの後に余分なテキストデータが付随しており、その内容に

	Warning (512): Unable to emit headers. Headers sent in file=....

という PHP の警告メッセージが格納されていた。

ネットでいろいろ調べてみた結果、

  • JSON 出力は echo {JSON文字列} で行なうと、出力しようとしているデータのサイズによっては上記の問題が発生する
  • echo ではなく $this->response->body({JSON文字列}); で出力することで回避可能

という事が判明した。これからは response オブジェクトを使うようにしよう。

関連タグ: CakePHP3  JSON 

関連エントリー