[CakePHP] RequestHandlerを使ってAjax通信かどうかを判定

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 /]



Author: webmaster