https://blog.csdn/feinifi/article/details/81180673

https://blog.csdn/weixin_44150474/article/details/103526735

https://wwwblogs/lijianda/p/9936775.html

https://blog.csdn/weixin_44150474/article/details/103526735

 

ajax在web项目开发中经常会用到,平时我们传递数据,基本都是一个参数名对应一个参数值,后端通过参数名就可以得到参数,从而进行相关逻辑处理,但是有时候我们会遇到批量操作,比如批量删除一个列表,这时候我们传递的就是一个id的数组,这时候前后端需要对数组传递做一些特别的处理:

第一种方式:

  • 通过ajax一个属性traditional:true来指定参数序列化时,不做深度序列化。
  • 通过JSON.stringify()将参数作为数组传递到后台,后台不能通过获取参数名的方式获取参数,需要通过inputstream流来读取参数。

这种方式我们传递的参数form-data中,每个参数在传递的过程中有一个参数名,这里叫ids,如果不做traditional:true的设置,参数传递中是这样子参数名ids后面加入了[],服务端是无法通过参数名获取参数的: 

当设置traditional:true之后,参数变为这样子: 

这种参数传递的方式,后端可以直接通过参数名ids来获取参数值,获取的参数也是一个数组。 

第二种方式:通过body传入一个数组,参数没有名字,后端需要通过流来读取。

 

这种方式form-data是这个样子的:

 

参数没有名字,后端需要通过输入流来读取body中的数据。这里需要注意一点,如果还有别的参数,获取body中的参数一定要在别的参数取之前获取。否则一旦通过request.getParameter()之后,body中的参数就会失效。

 

 

更多推荐

ajax向后端传递数组