2016-07-28 72 views
0

我在一臺服務器上有一個api,在另一臺服務器上有一個視圖文件。當我使用AJAX請求,Cake php 2x沒有檢測到ajax請求

$this->request->is('ajax') 

始終表示假值。但它在本地xampp服務器中正常工作。我還啓用了請求服務器的來源。我該怎麼辦。它是由於跨域嗎?

從視圖中我的AJAX是

$.ajax(
      { 
       url:'http://12.34.567.890/Users/getu.json', 
       // url:'<?php echo URL; ?>Users/getu.json', 
       type:"POST", 
       data:{access_token:'<?php echo $_SESSION["token"]->access_token; ?>', api_key:"***************"}, 
       async:false, 
       success:function(res) 
       { 
        console.log(res); 
       } 
      }); 

但是我發現的主要問題是,當直播服務器Ajax請求沒有頭

X-Requested-With:XMLHttpRequest; 

左右,因此蛋糕不能識別ajax請求。

+0

您是否在控制器中使用了requesthandler組件? '公共$組件= array('RequestHandler');' –

+0

是的,我在我的appController。 – user6367045

回答

0

你的問題可能是你的ajax調用。當你處理請求時,你使用的數據類型是什麼? 如果你需要做跨域Ajax調用,你已經使用JSONP作爲的dataType在Ajax調用是這樣的:

$.ajax({ 
    url: 'http://my_remote_server/controller/action', 
    dataType: 'jsonp', 
    success: function(res) { 
     // do stuff with res 
     alert("Success"); 
    }, 
    error:function() { 
     alert("Error"); 
    } 
}); 

然後在你的控制器 - >操作使用以下方法來檢測Ajax請求:

if($this->request->is('ajax')) { 
    // process the request and send output 
} 
+0

我不需要將dataType包含爲jsonp,因爲我已經允許請求域的訪問源。 – user6367045