PHP无法识别AJAX调用

时间:2012-10-23 10:08:10

标签: php jquery ajax

我通过jQuery的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);
                 }
            });

但警告始终显示'not ajax'消息。我做错了什么?

6 个答案:

答案 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

答案 1 :(得分:2)

需要在通过AJAX调用发送的数据中添加is_ajax: 1

答案 2 :(得分:2)

试试这个:

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

答案 3 :(得分: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';
}

答案 4 :(得分:1)

编辑您的AJAX调用并修改数据

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

答案 5 :(得分:1)

试试这个:

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