post data - ngResource AngularJS

余生颓废 提交于 2019-12-20 04:19:03

问题



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

回答1:


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.




回答2:


You need to config the $save method with a request method of 'POST'




回答3:


you can set the default option 'transformRequest' of $http to change the transfer formation of the post data.

var myApp = angular.module('myApp');  

myApp.config(function ($httpProvider) {  
    $httpProvider.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded";
    $httpProvider.defaults.transformRequest = function(data){  
        if (data === undefined) {  
            return data;  
        }  
        return $.param(data);  
    }  
});



回答4:


Thanks for your answers.
Indeed, data is post in the request's body.
With FuelPHP, I used Input::json('key') to get the values (and not Input:post('key'))



来源:https://stackoverflow.com/questions/21438917/post-data-ngresource-angularjs

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!