angularjs – POST массив объектов (данные JSON) на страницу PHP

Пример того, как мои данные 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.stringify перед вызовом и json_decode , повторив его; все еще не работает. Пробовал все возможности, о которых я могу думать, и что я нахожу в Интернете / других вопросах, но все еще не работаю.

Solutions Collecting From Web of "angularjs – POST массив объектов (данные JSON) на страницу PHP"

Я сделал 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 в строку

Я использую это, с помощью которого я могу отправить Array JSON:

 var array = {} array['key1'] = value1; array['key2'] = value2; $http.post(URL, array) .success(function(data){ }) .error(function(){ }); 

попробуйте использовать $ 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); });