数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true
数组类型参数传递:
若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 tradititonal 格式化:
$.ajax({
type:"post",
url:"test.action",
data:{
tid:[,,]
},
traditional:true,
……
});
起初我认为traditional:true,可有可无,但是后来不用traditional的时候,发现后台无法获取selectUsers的值,那么可以肯定的是traditional默认值是false。
当提交的参数是数组( {selectUsers:[value,value,value]} ),如果是false的话,则提交时会是"selectUsers[]=value&selectUsers[]=value";如果设置成true,则提交时会是"selectUsers=value&selectUsers=value",这样后台就能用String[] ids=request.getParameterValues("selectUsers"); 获取到值。
官方文档的解释如下:traditional 类型:Boolean
如果你想要用传统的方式来序列化数据,那么就设置为 true。(底层原理其实就是设置param()方法的traditional参数为true)
Set this to true if you wish to use the traditional style of param serialization
1、前台jquery
function deleteAll() {
var selectUsers=new Array();
//var selectUsers = null;
$(":checkbox[name='userID']").each(function() {
if ($(this).prop("checked"))
selectUsers.push($(this).val());
//selectUsers += "," + $(this).val();
});
$.ajax({
async : false,
traditional: true,
type:"post",
url:"elecUserAction_delete.do",
data:{selectUsers:selectUsers},
success:function(responsText){
if(responsText==""){
alert("删除成功");
}
}
});
}
2、后台Action代码
public String delete(){
String[] ids=request.getParameterValues("selectUsers");
System.out.println(ids.toString());
PrintWriter out = null;
out.write("");
return home();
}
总结:
当ajax传的data数据是数组时,必须设置traditional参数,并为true,然后后台才可以通过request.getParameterValues()方法获取到数据,否则会解析出错。
数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true的更多相关文章
- jquery ajax传递数组给php
写成:var data = {'item[]':item}; $.post(url,data,function(return_data) 写成item:item会导致数据缺失. 更多:http://w ...
- ajax 传递数组参数
一.ajax 传递数组参数 需要添加: traditional: true, let typeIDArr = [,,,,,]; var that = this; var url = '@Url.Act ...
- jsp采用ajax传递数组给后台controller并遍历
ajax传递数组,期间出各种各样的问题,那叫一个头疼,网上各种查,都没有解决,最终摸索摸索加借鉴搞定,不多说,上代码 /* 复选框选定部分 */ $("#delete").clic ...
- jQuery $.ajax传递数组的traditional参数传递必须true 对象的序列化
数组类型参数传递: 若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 ...
- ajax传递数组、form表单提交对象数组
在JSP页面开发中,我们常常会用到form表单做数据提交,由于以前一直只是使用form表单提交单个对象,只要表单文本域的name值和接收的对象的属性名一致,那么传值就没有什么问题.不过,在前几天的开发 ...
- ajax 传递数组类型参数后台接收不到的问题
在做排序功能的时候需要将一个数组的数据传递到后台,(当时怎么没用json,如果用json就没有那么多的事情了),数据提交采用ajax! 先看代码 js: submitbtn: function () ...
- ajax传递数组后台接收不到值的问题
背景: JQGrid需要进行批量删除操作传给后台的是数组,结果后台接收不到值. 后台语言:java 原因: ajax传递参数时,traditional 默认为false,JQuery会深度序列化参数对 ...
- 前端AJAX传递数组给Springmvc接收处理
前端传递数组后端(Spring)来接收并处理: <!DOCTYPE html> <html> <head> <meta charset="UTF-8 ...
- 小笔记(一):ajax传递数组及将ajax返回数据赋值
当使用ajax传递数据时,有可能传递多个数据,这是使用以下方法传递数据就会显得数据过多且混杂 $.ajax({ type:'post', url:url, data:{data:data,conten ...
随机推荐
- pku 2777(经典线段树染色问题)
Count Color Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 41202 Accepted: 12458 Des ...
- Go语言标准库之log包
用来作日志log输出的, 比较易懂. 今天周六啊,在公司加班学习一下呀. package main import ( "log" ) func init() { log.SetPr ...
- nutch 抓取需要登录的网页
题记:一步一坑,且行且珍惜 最近接到任务,要利用nutch去抓取公司内部系统的文章,可是需要登录才能抓到.对于一个做.net,不熟悉java,不知道hadoop,很少接触linux的我,这个过程真是艰 ...
- sonarQube安装及本机扫描C#项目
因项目需要,需要使用sonarQube对代码进行扫描并查看,因对sonarQube不熟悉,所以先在本机搭建测试环境. 参考了张老师的博客:http://www.cnblogs.com/danzhang ...
- Codeforces 1 C. Ancient Berland Circus-几何数学题+浮点数求gcd ( Codeforces Beta Round #1)
C. Ancient Berland Circus time limit per test 2 seconds memory limit per test 64 megabytes input sta ...
- AndroidManifest.xml文件详解(uses-feature)
http://blog.csdn.net/think_soft/article/details/7596796 语法(SYNTAX): <uses-featureandroid:name=&qu ...
- python中浅拷贝和深度拷贝的区别
在很多面试题中都会问到浅拷贝跟深度拷贝的区别,前几天一个朋友也问到了我浅拷贝跟深度拷贝到底有什么区别,这里就简单举栗子讲一下两者的区别. 浅拷贝(copy()):拷贝父对象,不会拷贝对象的内部的子对象 ...
- 今天找到了关于用深度学习识别fre2013的代码
http://blog.csdn.net/walilk/article/details/58709611 http://blog.csdn.net/zwx2445205419/article/deta ...
- 安装Windows渗透环境工具--PentestBox
PentestBox不同于运行在虚拟机或者双启动环境的Linux渗透测试发行版. 它打包了所有的安全工具,并且可以在Windows系统中原生地运行,有效地降低了对虚拟机或者双启动环境的需求. 下载地址 ...
- ES5 方法学习
Object 1. Object.getPrototypeOf(o)获取对象的prototype对象.等价于以前的o.__proto__ var o = {}; Object.getPrototype ...