angularjs 请求数据转换为Form Data传参

在angularjs中配置好服务,有时传参会导致后台借不到值或者后台直接报错;

  这就与后台框架有关,如果后台是以public ModelAndView接收接口传过来的参数,这种情况,前台传参的形式比较随意一些,但是后台需要对逐个参数进行判断取值,这个比较麻烦,这是后台框架的原因;

  如果后台是以public Object 接收接口传来的参数,这种框架只允许前端传参形式只允许以Form Data的形式传入;前端传参形式不是Form Data,这就需要手动转化

解决一:在配置service处加参数

method: 'post',
                    url: rootPath.contextPath() + "接口名称",
                    data: params,
                    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("&");
                    }

  解决二:这个方法比较麻烦,就是在配置文件provider中添加方法

           var qs = '';
                    angular.forEach(params, function (value, key) {
                        if (value == null)
                            return;
                        if (qs.length > 0)
                            qs += '&';
                         qs += (encodeURIComponent(key) + '=' + encodeURIComponent(value));
                         if(encodeURIComponent(key) == "lang"){
                        	 $rootScope.lang = encodeURIComponent(value);
                         }
                    });
                    qs += "&lang="+$rootScope.lang;

  

原文地址:https://www.cnblogs.com/lengyue0030/p/6489960.html