お世話になっております。
CakePHPのController内でAjax通信判別を行いたいと考えております。
下記に記載したソースについてですが、 某サイトを参考にAjax通信判別の処理を入れてみたのですが、
ifの中に入ってしまい処理が終わってしまいます。
ログに出力し、$_SERVER['HTTP_X_REQUESTED_WITH']の中身を確認したところ、ブランクが設定されておりました。
また、if文の判定部分を「$this -> request -> is('ajax')」にしてやってみましたが結果は同じでした。
ローカル環境ではうまくいくのですが、これもクロスドメイン制約によるものなのでしょうか。
どなたかご教授お願いします。
Javascript
1$('#test-btn').click(function() { 2 var rtn = $.ajax({ 3 type: "POST", 4 url: "http://【レンタルサーバー】/test/SampleApi/sample.json", 5 dataType: "json", 6 success: function(data) { 7 // 通信成功時の処理 8 alert("通信成功"); 9 }, 10 error: function() { 11 // 通信失敗時の処理 12 alert("通信失敗"); 13 } 14 }); 15});
PHP
1class SampleApiController extends AppController { 2 public $name = "SampleApi"; 3 public $components = array("RequestHandler"); 4 5 public function sample() { 6 // クロスドメイン対応 7 $this -> header("Access-Control-Allow-Origin: *"); 8 $this -> header("Access-Control-Allow-Methods: POST"); 9 10 // Ajax通信判別 11 if(!$this -> isAjax()) { 12 $this -> set("_serialize", ""); 13 return; 14 } 15 16 $this -> set("_serialize", ""); 17 return; 18 } 19 /** 20 * Ajaxによるリクエストかどうか 21 */ 22 private function isAjax() { 23 if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) 24 && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ 25 return true; 26 } 27 return false; 28 } 29} 30?>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/04/22 04:17