Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/264.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用php定义ajax调用的最佳方法_Php_Angularjs_Ajax - Fatal编程技术网

用php定义ajax调用的最佳方法

用php定义ajax调用的最佳方法,php,angularjs,ajax,Php,Angularjs,Ajax,我使用angular和PHP作为前端和后端,现在我想检测是否使用Ajax请求调用某个PHP文件 如果我在做,这个 app.controller('LoginController',function($scope,$http){ $scope.loginuser = function() { console.log($scope.username+" "+$scope.userpwd); $http.post("user/login") .success(function

我使用angular和PHP作为前端和后端,现在我想检测是否使用Ajax请求调用某个PHP文件

如果我在做,这个

app.controller('LoginController',function($scope,$http){
$scope.loginuser = function() {
    console.log($scope.username+" "+$scope.userpwd);
    $http.post("user/login")
    .success(function (data, status, headers) {
        console.log(data);
        //$scope.nowplaying=data;
    }).error(function (data, status, header) {
        //code to handel error
    });
}

});
我有很多东西要检测Ajax调用,比如

if (isset($_SERVER['HTTP_X_REQUESTED_WITH']) && ($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest')) {
// this is ajax request, do something
}
但我不知道为什么这对我不起作用,因为当我打印
$\u服务器
数组时,我看不到
HTTP\u X\u请求的\u

这是我得到的输出

那么,有人能给我一些提示或者告诉我在php中检测ajax的方法吗


PS:我正在附加图像,以显示我在responce中没有使用
获取HTTP\u X\u REQUESTED\u

打印所有值$\u服务器变量,并检查HTTP\u X\u REQUESTED\u是否存在


某些服务器变量依赖于浏览器/代理

默认情况下,不发送“X-request-With”供使用“X-request-With”您需要配置$httpProvider

$httpProvider.defaults.headers.common["X-Requested-With"] = 'XMLHttpRequest';

或者在php上检查's'Content Type'是否为'application/json'

您可以借助
$\u SERVER
变量来检测它

使用print_r($_SERVER)可以清楚地看到它,当您使用ajax请求页面时,您可以在
$_SERVER
变量下看到
HTTP_X_REQUESTED_和
参数

<?php
     echo '<pre>';
     print_r($_SERVER);
?>

图像中的输出是打印的结果($服务器)图像中的输出是打印的结果($服务器)是的,但我告诉过使用选项您可以很容易找到它,我的主要观点是覆盖$服务器['HTTP\u X\u REQUESTED\u with']选项,谢谢您完美的回答。
if ( isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
     $_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') {
    echo 'Ajax call';
} else {
    echo 'Normal Call';
}