2012-10-23 28 views
0

我打電話通過jQuery的AJAX方法的文件是這樣的:PHP不承認AJAX調用

$is_ajax = $_REQUEST['is_ajax']; 
    if(isset($is_ajax) && $is_ajax) 
    { 
     echo 'its ajax!'; 
    } 
    else echo 'im called, but not via ajax'; 

和我的AJAX調用:

jQuery.ajax({ 
       type: 'POST', 
       url: 'my-service.php', 
       data: data, 
       success: function(response) { 
        alert(response); 
       } 
      }); 

但警報始終顯示「無法阿賈克斯消息。我究竟做錯了什麼?

+2

你在哪裏定義'is_ajax'? – Florent

+2

您如何期望$ _REQUEST包含'is_ajax'? –

+1

'data'中設置了什麼值? –

回答

2

需要添加數據is_ajax: 1正在被通過AJAX調用發送。

+0

我認爲@Florent應該轉發這個答案 – Peon

1

另一種方法

你可以簡單地檢查該請求是否是AJAX或不喜歡這樣,

/* AJAX check */ 
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    echo 'its ajax!'; 
}else{ 
    echo 'im called, but not via ajax'; 
} 
+0

由誰來擔心,jQuery? –

+0

這是PHP代碼... –

+2

誰在設置HTTP標頭?我不相信IE8插入這個頭。 –

2

試試這個:

jQuery.ajax({ 
      type: 'POST', 
      url: 'my-service.php', 
      data: {is_ajax:1}, 
      success: function(response) { 
       alert(response); 
      } 
     }); 
1

編輯您的AJAX調用和修改數據

jQuery.ajax({ 
      type: 'POST', 
      url: 'my-service.php', 
      data: {"is_ajax":"the value"}, 
      success: function(response) { 
       alert(response); 
      } 
     }); 
1

試試這個:

if(isset($_POST['is_ajax'])) 
{ 
    echo 'its ajax!'; 
} 
else 
{ 
echo 'im called, but not via ajax'; 
} 
+2

這是合法的方式! :) – memosdp

+0

@jan dvorak:你不回答然後而不是評論每個答案! – Aditi

+0

現有答案已足夠。我向他們投了贊。 –

3

看來你的檢測AJAX方法是錯誤的。如果您的服務器支持HTTP_X_REQUESTED_WITH,那麼它要走的路:

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { 
    /* special ajax here */ 
    die($content); 
} 

來源:Detect an AJAX Request