CakePHPでAjax通信かどうかを判定する際には RequestHandler を使います。
RequestHandlerにではAjaxだけでなく、SSL・GET・POSTなどの判定を行うことができます。エラー処理を作る時にもよく使いますので、使い方を覚えておきましょう。
リクエストハンドラは初期状態で多くのJavaScriptライブラリが使っている Ajaxリクエストを自動的に判定する仕組みになっています。
RequestHandlerを使う準備
コントローラーのコンポーネントに「RequestHandler」を設定します。
public $components = array('RequestHandler');
RequestHandlerの使い方
判定はif文を使って行います。
if($this->RequestHandler->isAjax()){ //Ajax通信時の処理 }else{ //Ajax通信ではない時の処理 }
if($this->RequestHandler->isAjax())の結果は true か false で返されます。
ajax.ctpというViewを作っておき、そのビューファイルを使う場合。
$this->layout = 'ajax';
autoRenderを利用しないで、値のみを利用する場合。
$this->autoRender = false;
RequestHandlerの種類
RequestHandlreには下記のような種類があります。
[table id=36 /]