Reputation: 113
I'm having great trouble passing some information from my Angularjs code to my PHP code for processing.
JS
Controller
var dataString = '{"round": {"number": 1,"drops": [{"pos": "0","cust": 1025}]}}';
dropService.updateDrops(dataString)
.success(function(data) {
console.log(data);
})
Service
updateDrops : function(drops) {
return $http({
url: "/app/php/update_rounds.php",
method: "POST",
data: drops,
headers: {'Content-Type': 'application/x-www-form-urlencoded'}
});
}
PHP
$dropString = $_POST;
$dropArray = json_decode($_POST);
$a = $dropArray->{"round"}->{"number"};
echo "Round = ".$a;
What I expect to see on the console is
Round = 1
but what I get is
Round =
Obviously something is going screwy. However if I replace
$dropString = $_POST;
with
$dropString = '{"round": {"number": 1,"drops": [{"pos": "0","cust": 1025}]}}';
everything works out just fine so I know that the PHP will work if I can just get the right data to it. Where am I going wrong?
Upvotes: 2
Views: 107
Reputation: 5666
This is my working example with use Angular,PHP and MySQL. I use JSON to communicate between controller and PHP dataset file. my example on GitHub
Start reading from: controllers.js
Most interesting line (in this case) is in file 'controllers.js' line 54-63. Listed bellow:
$scope.updateTable = function() {
$http({
url: 'phpcode/dataset1.php',
method: 'GET',
params: {table: $scope.choice, index: $scope.index, viewingSize: $scope.viewingSize, sort: $scope.sortChoice},
}).success(function(data) {
$scope.rows = data.rows;
$scope.columns = data.columns;
});
}
Upvotes: 0
Reputation: 2800
$_POST is an array of key=>value pairs
You're looking for the entire POST BODY as a string. Use this:
$dropString = http_get_request_body();
Edit: If that doesn't work, use
$dropString = file_get_contents('php://input');
Upvotes: 2