【问题标题】:post data - ngResource AngularJS发布数据 - ngResource AngularJS
【发布时间】:2014-02-21 17:14:45
【问题描述】:


您好!
我用 AngularJS 开发了一个 RESTful webapp,我使用 ngResource 模块发送 http 请求。该网络服务是使用 FuelPHP 开发的。

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

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

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

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

代码如下:

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

【问题讨论】:

    标签: web-services angularjs http-post ngresource


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      你可以设置$http的默认选项'transformRequest'来改变post数据的传输格式。

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

      【讨论】:

        【解决方案3】:

        我认为这是 PHP 如何处理 POST 的问题。使用 AngularJS $resource 时,它​​将使用 JSON 作为帖子的 BODY 发布对象。 PHP 不认为这是一个常规参数。我不得不在其他 PHP 中这样做(从未使用过 Fuel)

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

        那么您应该能够将 $requestBody 视为一个普通的 json 对象。

        【讨论】:

          【解决方案4】:

          您需要将 $save 方法配置为 'POST' 的请求方法

          【讨论】:

          • 我认为保存方法的默认类型是POST。无论如何,我试过了,它不起作用。 app.factory('Medication', ['$resource', 'global', function ($resource, global) { return $resource(global.API+'/medication/medication', {}, { "save": {method :"POST"} } ) }])
          猜你喜欢
          • 1970-01-01
          • 2023-03-03
          • 2013-12-03
          • 2017-11-13
          • 2014-07-07
          • 2014-05-19
          • 1970-01-01
          • 1970-01-01
          • 2017-01-17
          相关资源
          最近更新 更多