0

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

但警报总是显示“不是 ajax”消息。我究竟做错了什么?

4

6 回答 6

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);
}

来源:检测 AJAX 请求

于 2012-10-23T10:15:23.487 回答
2

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

于 2012-10-23T10:12:26.910 回答
2

试试这个 :

jQuery.ajax({
            type: 'POST',
            url: 'my-service.php',
            data: {is_ajax:1},
            success: function(response) { 
                alert(response);
             }
        });
于 2012-10-23T10:12:56.207 回答
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';
}
于 2012-10-23T10:12:08.233 回答
1

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

jQuery.ajax({
            type: 'POST',
            url: 'my-service.php',
            data: {"is_ajax":"the value"},
            success: function(response) { 
                alert(response);
             }
        });
于 2012-10-23T10:13:08.817 回答
1

试试这个 :

if(isset($_POST['is_ajax']))
{
    echo 'its ajax!';
}
else 
{
echo 'im called, but not via ajax';
}
于 2012-10-23T10:14:03.250 回答