2017-09-13 184 views
0

这是我的angularjs代码HTTP POST方法400示出了错误时的请求数目是大

$scope.createOrderObject.orderItemObjs=JSON.stringify($scope.createOrderObject.orderItemObjs); 

$scope.createOrderObject 

是一个数组,这包含比3阵列更多。 当我添加达5产品这是工作超好,但是当我尝试添加第6项显示400错误。

$http({ 
      method: "POST", 
      url: baseUrl + "/Order/saveOrUpdateOrders", 
      params: $scope.createOrderObject, 
      headers: { 
       'Content-Type': 'application/json', 

      } 

在浏览器将此请求告知为malform url后,发布url变得非常大,大约有5000个字符。

我的servlet接收到这个请求这样

@RequestMapping(value = "/Order/saveOrUpdateOrders", method =RequestMethod.POST) 
    public void saveOrUpdateOrders(OrdersFormObj orderFormObj, HttpServletResponse response, HttpServletRequest request) throws IOException { 
     try { 
      String addCity = request.getParameter("addCity"); 
      String addDist = request.getParameter("addDist"); 
      String orderItemObjs = request.getParameter("orderItemObjs"); 

这是一个

String orderItemObjs = request.getParameter("orderItemObjs"); 

Stringfy阵列

我真的不知道是什么问题。我怀疑网址的长度,但我不知道如何解决这个问题。请帮忙摆脱这个

回答

1

这似乎是一个POST请求中的PARAMS的长度问题。请阅读以下

What is the maximum length of a URL in different browsers?

所以,我要说,你使用一些其他的机制,将数据发送到服务器。

相反的params,你应该使用data像下面

$http({ 
     method: "POST", 
     url: baseUrl + "/Order/saveOrUpdateOrders", 
     data: $scope.createOrderObject, 
     headers : { 
      'Content-Type' : 'application/json' 
     }) 
1

尽量使AJAX调用这种方式:

var req = { 
method: 'POST', 
url: baseUrl + "/Order/saveOrUpdateOrders", 
headers: { 
    'Content-Type': "application/json" 
}, 
data: $scope.createOrderObject 
} 

$http(req).success(function(){...}).error(function(){...}); 

PARAMS” 是GET调用,使用 “数据” 与后调用