如何使用带角度的ngResource模块发送x-www-form-urlencoded数据?

时间:2015-03-19 16:16:43

标签: angularjs rest ngresource

一切都存在于标题中。

以angular:

生成资源时
myModule.factory('MyResource', ['$resource', function ($resource) {

    return $resource('api/MyResource/:id');

}]);

并在控制器中使用:

MyResource.save({att: att, att2: att2});

服务将json工件中的数据发送到服务器。

我需要以x-www-form-urlencoded形状发送数据。

我应该在哪里修改我的代码来解决这个问题?

3 个答案:

答案 0 :(得分:3)

应传递headers参数

myModule.factory('MyResource', ['$resource', function ($resource) {
    return $resource('api/MyResource/:id', {}, {
        save: {
            method: 'POST',
            headers: {
                'Content-Type': 'application/x-www-form-urlencoded'
            }
        }
    });
}]);

然后在使用$httpParamSerializer

发送数据之前序列化您的数据
myModule.controller('appController', function ($httpParamSerializer) {
    MyResource.save($httpParamSerializer({att: att, att2: att2}));
}

答案 1 :(得分:0)

完成答案(因为角度1.4)。您需要包含de dependency $ httpParamSerializer

var res = $resource(serverUrl + 'Token', { }, {
                save: { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
            });

            res.save({ }, $httpParamSerializer({ param1: 'sdsd', param2: 'sdsd' }), function (response) {

            }, function (error) { 

            });

答案 2 :(得分:-3)

我终于找到了自己:

在定义资源和相关指令时,“headers”参数就在手中。

myModule.factory('MyResource', ['$resource', function ($resource) {

    return $resource('api/MyResource/:id', {}, {
      save: { method: 'POST', headers: { 'Content-Type': 'application/x-www-form-urlencoded' } }
    });

}]);