AngularJs无法将post param发送到PHP服务

时间:2016-12-09 17:32:19

标签: php angularjs

我已经在我的php服务器上托管了一个服务,想要使用我的angularjs app消费它但不知何故我无法从angularjs发送post params 以下是我的代码

angular.module('pixyfi', ['ngMaterial']).controller('productGridController',function($scope, $http){
            $http({
                method:'POST',
                url:'/getFeed.php',
                params:{
                    user:16,
                    friends:5,
                    page:1,
                    token:1
                }
            }).then(function(response){
                console.log(response.data);
            })
        })

在php中接收params为

$friends=mysqli_real_escape_string($conn,$_POST['friends']);
$page=mysqli_real_escape_string($conn,$_POST['page']);
$user=mysqli_real_escape_string($conn,$_POST['user']);
$token = mysqli_real_escape_string($conn,$_POST['token']);

请让我知道我错过了什么

为了测试目的,我创建了test.Post.php,它将ID作为post param并回显它。 PHP代码

<?php
$id = $_POST['id'];
echo "ID ".$id;
?>

Angular JS Code

 $http({
          method  : 'POST',
          url     : '/testPost.php',
          data    : {"id":"1"}, //forms user object
          headers : {'Content-Type': 'application/x-www-form-urlencoded'} 
         })
          .success(function(data) {
            if (data.errors) {
              // Showing errors.
              $scope.errorName = data.errors.name;
              $scope.errorUserName = data.errors.username;
              $scope.errorEmail = data.errors.email;
            } else {
              $scope.message = data.message;
            }
          });

但它再次无效。请建议我应该做些什么改变?

1 个答案:

答案 0 :(得分:0)

根据文档,&#39; params&#39;选项适用于GET参数,而不是POST。请参阅https://docs.angularjs.org/api/ng/service/$http#post

上的文档

另请注意,当您希望发出POST请求时,可以使用方便的$ http.post方法。

所以你可以试试:

angular.module('pixyfi', ['ngMaterial']).controller('productGridController',function($scope, $http){
            $http.post('/getFeed.php', {
                user:16,
                friends:5,
                page:1,
                token:1
            }).then(function(response){
                console.log(response.data);
            })
        })