2

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?

1
  • 1
    $_POST is a PHP array with all posted values. Try var_dump($_POST); to check which your data uses or provide one in your AJAX request that you use specifically Commented Jan 6, 2014 at 23:46

2 Answers 2

2

$_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');
Sign up to request clarification or add additional context in comments.

1 Comment

Might want to make a note that this is only available in pecl_http, otherwise just use file_get_contents('php://input')
0

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;
    });
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.