k01ken’s b10g

He110 W0r1d!

CakePHP3でAjaxを使う

開発環境は、Windows 7 Professional(32bit)+XAMPP v3.22+CakePHP 3.5.8。

JavaScript内で、Ajaxを使うときに、ローカル環境だと、パスを指定する際は、絶対パスだと、なぜか通信エラーになるので、例えば、Apacheを使っていて、htdocsディレクトリ内に、CakePHPのルートディレクトリを作成した
場合は、/アプリケーション名/コントローラ名/アクション名で指定すること。
組み込みサーバーを使っている場合は、/コントローラ名/アクション名で指定すること。

・通信すると、結果をコントローラ側でprintやechoで出力したときに『headers already sent』のようなエラーが出現することがあるので、その場合は、通信先のコントローラのuseの直後に、ob_start();を入れておくことで、エラーが消える。

参考リンク
jQueryのajaxでphpを呼び出す。(cakephp3) - Qiita
PHP: ob_start - Manual
PHP の `headers already sent` エラーはどう直したらいいですか? - スタック・オーバーフロー