在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;