ajax通过post方法传数组

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

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

第一种方式: 增加ajax请求参数traditional

前端代码:

后端代码(springmvc):

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

 

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

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

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

前端代码:

扫描二维码关注公众号,回复: 16540020 查看本文章

后端代码(springmvc):

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

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

猜你喜欢

转载自blog.csdn.net/feinifi/article/details/81180673