前端AngularJS的POST请求,后端SpringMVC接收数据的小坑

来源:互联网 发布:jquery.dialog.js 编辑:程序博客网 时间:2024/05/29 04:28

前端AngularJS的POST请求,后端SpringMVC接收数据的小坑

使用AngularJS的$http进行POST请求,默认的Content-type为application/json; charset=UTF-8

为了让SpringMVC的Controller能够接收到数据,进行POST请求时的Content-type应修改为application/x-www-form-urlencoded; charset=UTF-8

具体示例代码如下

var formdata = {    "username" : $scope.username,    "truename" : $scope.truename};$http({    method : 'post',    url : url,    data : formdata,    headers:{'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'},    transformRequest: function(obj) {        var str = [];        for(var p in obj){            str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));        }        return str.join("&");    }}).success(function(response){    console.log("success");    console.log(response);}).error(function(response){    console.log("error");    console.log(response);});

AngularJS默认POST配置看这里

也可以使用jquery代替AngularJS的$http进行请求

具体示例代码如下

var formdata = {    "username" : $scope.username,    "truename" : $scope.truename};$.ajax({    url : url,    type : "POST",    data : formdata,    dataType : "json",    timeout : 10000,    success : function (data) {        console.log(data);    },    error : function (data) {        console.log(data);    },});

这样处理的话,SpringMVC的controller按照常规方式接受数据就好了,可以通过HttpServletRequest接受了

@RequestMapping(value="/back_register",method=RequestMethod.POST)public void register(User user, HttpServletRequest request, HttpServletResponse response) {    System.out.println(user);    String username = request.getParameter("username");    String truename = request.getParameter("truename");    System.out.println("username: " + username);    System.out.println("truename: " + truename);}
阅读全文
0 0