Angularjs 传递k-v模式的参数

原创 2017年01月02日 22:12:29

mark一下:

   初次使用angularjs在使用$http传递参数的时候,发现后台无论如何都获取不到参数,百度了一下,发现因为angularjs发送post请求时参数列表类型是 Payload, 而后台想要接收参数的话, 参数列表的类型需为 Formdata形成的kv模式的参数,所以需要对$http进行配置,发现两种配置模式,mark一下:
A:修改配置文件:
        app.config(function ($httpProvider) {
            $httpProvider.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
            var param = function (obj) {
                var query = '', name, value, fullSubName, subName, subValue, innerObj, i;
                for (name in obj) {
                    value = obj[name];
                    if (value instanceof Array) {
                        for (i = 0; i < value.length; ++i) {
                            subValue = value[i];
                            fullSubName = name + '[' + i + ']';
                            innerObj = {};
                            innerObj[fullSubName] = subValue;
                            query += param(innerObj) + '&';
                        }
                    }
                    else if (value instanceof Object) {
                        for (subName in value) {
                            subValue = value[subName];
                            fullSubName = name + '[' + subName + ']';
                            innerObj = {};
                            innerObj[fullSubName] = subValue;
                            query += param(innerObj) + '&';
                        }
                    }
                    else if (value !== undefined && value !== null)
                        query += encodeURIComponent(name) + '=' + encodeURIComponent(value) + '&';
                }
                return query.length ? query.substr(0, query.length - 1) : query;
            };
            // Override $http service's default transformRequest
            $httpProvider.defaults.transformRequest = [function (data) {
                return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;
            }];
        });

此时调用的时候data里就可以写KV模式的参数了:

$http({
     method  : 'POST',
     url     : '/',
     data    : {'username': $scope.username, "password": $scope.password},
})

B:传递参数修改:
这种感觉比较简答,mark下:

$http({
     method  : 'POST',
     url     : '/',
     data    : $.param({'username': $scope.username, "password": $scope.password}),
     headers: {'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
})

相关文章推荐

K-V数据库-Redis的基本命令及配置文件参数详解

云平台和K-V数据库:由于老旧的rdbms数据库存储系统应对海量的数据时进行横向扩展(scale out)和纵向扩展(scale up)对数据业务的流量以及类型具有具有约束要要求,不同的数据量和业务类...

AngularJS $http post 传递参数数据

AngularJS $http post 传递参数数据

初学AngularJs路由(二):在路由中传递参数

我们不仅可以在控制器中直接定义属性的值,比如:app.controller('listController',function($scope){ $scope.name="ROSE"; });...
  • oak160
  • oak160
  • 2016年11月03日 11:36
  • 3846

在 Angularjs 中 ui-sref 和 $state.go 如何传递参数

1 ui-sref、$state.go 的区别 ui-sref 一般使用在 ...; a ui-sref="message-list">消息中心a> $state.go('someSta...

AngularJS下$http服务Post方法传递json参数

如何使用Angularjs $http服务以POST方法向服务器传递json对象数据。
  • Rotbing
  • Rotbing
  • 2017年03月06日 15:06
  • 1886

angularjs项目需要从一个页面跳转到另一个页面,同时需要传递一个参数。

作者:Ye Huang 链接:https://www.zhihu.com/question/33565135/answer/69651500 来源:知乎 著作权归作者所有,转载请联系作者获得授权...

AngularJS进阶(八)实现页面跳转并进行参数传递

angularjs实现页面跳转并进行参数传递 Angular页面传参有多种办法,我在此列举4种最常见的: 1. 基于ui-router的页面跳转传参 (1) 在AngularJS的app.js中用ui...

Android Camera HAL V3参数传递

最近一直在调试Android 4.4.3的Camera HAL层,对framework层到HAL的参数传递方法一直不明白,导致调试无从下手,今天总算是有点启发,也不知道对不对,但是要写出来给,一是给自...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Angularjs 传递k-v模式的参数
举报原因:
原因补充:

(最多只允许输入30个字)