Take the 2-minute tour ×
Stack Overflow is a question and answer site for professional and enthusiast programmers. It's 100% free, no registration required.

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?

share|improve this question
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 –  kingkero 15 hours ago
add comment

1 Answer

up vote 2 down vote accepted

$_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');
share|improve this answer
2  
Might want to make a note that this is only available in pecl_http, otherwise just use file_get_contents('php://input') –  Phil 15 hours ago
 
Good call, @Phil. –  Tommy Crush 15 hours ago
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.