Search code examples
web-servicesangularjshttp-postngresource

post data - ngResource AngularJS



Hello !
I develop a RESTful webapp with AngularJS, I use the ngResource module to send http requests. The webservice is developped with FuelPHP.

I'm having a problem to creating a resource with the $save method of ngResource. My web service doesn't receive post data.

When I check the http request with Firebug, I can see the post data.

I don't understand why the post data are not received by the webservice. So if you have an idea, it would be cool to help me.

Sorry for my bad level in English.

Here is the code :

Service : 
app.factory('Medication', ['$resource', 'global', function ($resource, global) {
    return $resource(global.API+'/medication/medication', {}, {})
}])

Method in the controller : 
$scope.addMedication = function() {
    var newMed = new Medication();
    newMed.name = 'nameValue';
    newMed.increaseinr = 1;
    newMed.details = 'detailsValue';
    newMed.$save();
}

Solution

  • I believe this is an issue with how PHP is handling the POST. When using AngularJS $resource it will POST the object with JSON as the post's BODY. PHP does not see this as a regular parameter. I've had to do this in other PHP (never used Fuel)

    $requestBody = file_get_contents('php://input');
    $requestBody = json_decode($requestBody, true);
    

    Then you should be able to inspect $requestBody as a normal json object.