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