博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
解决Ajax异步请求中传数组参数,后台无法接收问题
阅读量:6691 次
发布时间:2019-06-25

本文共 984 字,大约阅读时间需要 3 分钟。

  项目中经常遇到批量删除、批量导出等需求,往往需要把多个id封装成数组传到后台做业务逻辑处理。但是普通ajax请求data参数是数组,后台用数组接收不到。

一般ajax写法

var ids= [];$.ajax({         url: 'xxxx.do',        data: { ids: ids},        dataType: "json",        type: "POST",        success: function (responseJSON) {                 alert('Ok');        } });

这样的写法后台用数组类型接收参数ids为null。经过多方查询解决方案是在ajax请求时加上traditional:true,就可以了。

$.ajax({     url: 'xxxx.do',     data: { ids: ids},     dataType: "json",     type: "POST",     traditional: true,//这里设为true就可以了    success: function (responseJSON) {         alert('Ok');     } });

为什么这样写?traditional又是什么意思呢?下面为大家解惑:

一般我们传数参数组时这样写:

data:{arr:[1,2,3]}

如果单纯写成这样,在java后台是无法取到参数的,因为jQuery需要调用jQuery.param序列化参数:jQuery.param( obj, traditional )

默认的话,traditional为false,即jquery会深度序列化参数对象,但servelt api无法处理,我们可以通过设置traditional 为true阻止深度序列化,

然后序列化结果如下:

arr: ["123", "456", "789"] => arr=123&arr=456&arr=456

这样之后,我们就可以在后台通过request.getParameterValues()来获取参数的值数组了。

转载于:https://www.cnblogs.com/wangshuaiandroid/p/6702956.html

你可能感兴趣的文章
如何使用Hanlp加载大字典
查看>>
特斯拉Model 3进化不止 传统车企到底应该学什么? ...
查看>>
1月18日云栖精选夜读 | Euler 今日问世!国内首个工业级的图深度学习开源框架,阿里妈妈造 ...
查看>>
4月云栖社区最新技术活动预告
查看>>
我的JAVA面试经验(3年左右工作经验)
查看>>
(十五)Java springcloud B2B2C o2o多用户商城 springcloud架构-commonservice-sso...
查看>>
新能源汽车屡着火,AIoT提供了保命招
查看>>
向蚂蚁学习!六足机器人可利用偏振太阳光实现精确导航 ...
查看>>
大数据开发学习路线,如何快速成为大数据工程师?
查看>>
脚本填报表的条件查询
查看>>
好程序员web前端分享js技巧和js中一些常见的陷阱
查看>>
从一个开发的角度看负载均衡和LVS
查看>>
Spring Boot(12)——使用MongoDB
查看>>
c++基础(上) 听课流水账
查看>>
Observable
查看>>
k8s使用deployment升级
查看>>
PostgreSQL 动态更新 C 语言函数
查看>>
结合场景谈一谈微服务配置
查看>>
Java基本语法
查看>>
golang中archive/zip包
查看>>