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

CakePHPでAjax通信かどうかを判定する際には RequestHandler を使います。

RequestHandlerにではAjaxだけでなく、SSL・GET・POSTなどの判定を行うことができます。エラー処理を作る時にもよく使いますので、使い方を覚えておきましょう。

リクエストハンドラは初期状態で多くのJavaScriptライブラリが使っている Ajaxリクエストを自動的に判定する仕組みになっています。

RequestHandlerを使う準備

コントローラーのコンポーネントに「RequestHandler」を設定します。

RequestHandlerの使い方

判定はif文を使って行います。

if($this->RequestHandler->isAjax())の結果は true か false で返されます。

ajax.ctpというViewを作っておき、そのビューファイルを使う場合。


autoRenderを利用しないで、値のみを利用する場合。

RequestHandlerの種類

RequestHandlreには下記のような種類があります。

RequestHandler説明
$this->RequestHandler->isPostPOSTのアクセスかどうか
$this->RequestHandler->isGetGETのアクセスかどうか
$this->RequestHandler->isAjaxAjaxのアクセスかどうか
$this->RequestHandler->isXmlXMLレスポンスを受け付けるかどうか
$this->RequestHandler->isRssRSSレスポンスを受け付けるかどうか
$this->RequestHandler->isAtom Atomレスポンスを受け付けるかどうか
$this->RequestHandler->isSSLSSLのアクセスかどうか
$this->RequestHandler->isMobileモバイルのアクセスかどうか



Author: webmaster