angularjs - 将对象数组(JSON数据)POST到PHP页面

时间:2015-03-04 09:45:50

标签: php json angularjs

我的JSON数据的示例:

$scope.a = [{
            "email": "keval@gmail",
            "permissions": {
                "upload": "1",
                "edit": "1"
            }
        }, {
            "email": "new@aa",
            "permissions": {
                "upload": "1",
                "edit": "1"
            }
        }];

我想发布相同内容,这是我的方法:

$http({
    method: 'POST',
    url: 'backend/savePermissions.php',
    data: {
        mydata: $scope.a
    },
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
})
.success(function(data) {
    console.log(data);
});

PHP将接收请求并回复:

echo $_POST['mydata'];

我在通话前JSON.stringifyjson_decode同时回复了它;仍然没有奏效。一直在尝试我能想到的所有可能性,以及我在网络/其他问题上找到的,但仍然没有工作。

3 个答案:

答案 0 :(得分:6)

我为你做了plnkr http://plnkr.co/edit/K8SFzQKfWLffa6Z4lseE?p=preview

$scope.postData = function () {
    $http.post('http://edeen.pl/stdin.php', {user:$scope.formData}).success(
      function(data){
        $scope.response = data
      })
  }

你可以看到我发送原始JSON而没有格式化,然后在php中

<?php
  echo file_get_contents('php://input');

我直接阅读JSON并回复它,但你可以做任何你想做的事情

详细了解php://input http://php.net/manual/en/wrappers.php.php

我长时间使用REST服务以避免将JSON转换为字符串多次

答案 1 :(得分:2)

我使用它,我可以使用它发送Array JSON:

var array = {}
array['key1'] = value1;
array['key2'] = value2;

$http.post(URL, array)
  .success(function(data){
  })
  .error(function(){

});

答案 2 :(得分:1)

尝试使用$ httpParamSerializer或$ httpParamSerializerJQLike

$http({
    method: 'POST',
    url: 'backend/savePermissions.php',
    data: $httpParamSerializer($scope.a),
    headers: {
        'Content-Type': 'application/x-www-form-urlencoded'
    }
})
.success(function(data) {
    console.log(data);
});