post请求 request payload问题

Mixjuice AngularJS内置服务$h... 最后由 Mixjuice 于2015年11月21日回复

  • 2 解决
  • 3.5k 浏览

post方式提交时为request payload,Jfinal后台并没有收到,搜过后都说是要转form data后才行,但是在视频中并没有这样写,想问问你是如何解决的?我自己写的JFinal后台按照你的方法并不能接收到参数

  • RuiZhou 2015年10月30日 回答 #1楼
  • 把下面这段代码放到整个项目的config里 就 ok了。视频里忘提了。这样就可以和jquery一样用。后台按照普通的表单获取参数方式就行了

    angular.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;

      };

      $httpProvider.defaults.transformRequest = [function(data) {

        return angular.isObject(data) && String(data) !== '[object File]' ? param(data) : data;

      }];

    });

  • 0 评论
  • Mixjuice 2015年11月21日 回答 #2楼
  • #1楼  @RuiZhou 嗯嗯 我的处理差不多 不过没有这么完整,代码我再具体研究下~谢啦~么么哒

  • 0 评论