发布数据 - ngResource AngularJS

时间:2014-01-29 17:57:47

标签: web-services angularjs http-post ngresource

你好!
我使用AngularJS开发RESTful webapp,我使用ngResource模块发送http请求。 Web服务是使用FuelPHP开发的。

使用$save ngResource方法创建资源时遇到问题。我的网络服务不接收帖子数据。

当我用Firebug检查http请求时,我可以看到帖子数据。

我不明白为什么网络服务没有收到帖子数据。所以如果你有一个想法,帮助我会很酷。

对不起我的英语水平不好。

以下是代码:

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

4 个答案:

答案 0 :(得分:1)

我认为这是PHP处理POST的一个问题。当使用AngularJS $资源时,它将使用JSON作为帖子的BODY来POST对象。 PHP不会将此视为常规参数。我必须在其他PHP中使用它(从未使用过Fuel)

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

然后你应该能够将$ requestBody视为普通的json对象。

答案 1 :(得分:0)

您需要使用' POST'

的请求方法配置$ save方法

答案 2 :(得分:0)

感谢您的回答 实际上,数据是在请求的主体中发布的。
使用FuelPHP,我使用Input :: json('key')来获取值(而不是Input:post('key'))

答案 3 :(得分:0)

您可以设置默认选项' transformRequest' $ http改变后期数据的转移形成。

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