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