使用$ resource发布表单数据

时间:2015-05-18 07:55:40

标签: javascript angularjs angular-resource

以下代码将表单数据发布为json而不是键值对。

服务

            $resource(apiPath, {
                Id: '@Id',
                apt_id: user_info.apt_id,
                mauth_token: user_info.mauth_token,
                mauth_account_id: user_info.mauth_acnt_id,
                rest: 1,
            }, {
                save:{
                    method:'POST',
                    headers : {'Content-Type': 'application/x-www-form-urlencoded'}
                }
            });

控制器

.controller('BroadcastSmsSendCtrl', function($scope, $ionicLoading, $ionicActionSheet, $state, $timeout, $location, BroadcastSmsSvcs, GetUserCountHttpSvcs) {
            $scope.entry = new BroadcastSmsSvcs();

            $scope.doSubmit = function() {
                BroadcastSmsSvcs.save({}, $scope.entry);
            };
        });

Form data

3 个答案:

答案 0 :(得分:12)

AngularJs提供了一种服务,可以像序列化对象一样转换为jQuery。

而不是json序列化:{"id": 1, "name": "whatever"}

变为:id=1&name=whatever

所以你可以做到:

save:{
    method: "POST",
    headers : {"Content-Type": "application/x-www-form-urlencoded"}, 
    transformRequest: function(data) {
        return $httpParamSerializerJQLike(data);
    }
}

注意:在您的服务中,您必须注入$httpParamSerializerJQLike服务

答案 1 :(得分:3)

尝试将此添加到$ resource对象

headers : {'Content-Type': 'application/x-www-form-urlencoded'},
transformRequest : function(obj){
      var str = [];
      for(var p in obj)
        str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
      return str.join("&");
    }
  }

答案 2 :(得分:3)

alignparentBottom功能

中添加以下内容
.config()