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