数组类型参数传递问题:$.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 ...
随机推荐
- Flask 知识总结
阅读目录 第一篇:Flask基础知识介绍 第二篇:Flask扩展小结 第三篇:Flask 配置文件 第四篇:ORM.MySQL数据库连接池 第五篇:单例模式.蓝图Blueprint 第六篇:SQLAL ...
- [Android] 按钮单击事件的五种写法
在平时学习安卓的过程中,不论是看视频还是看博客,我发现每个人对代码的写法都有不同的偏好,比较明显的就是对控件响应事件的写法的不同.所以我想把这些写法总结一下,比较下各种写法的优劣,希望可以让自己可以灵 ...
- poj1743 后缀数组, poj挂了 存个代码
#include<bits/stdc++.h> #define LL long long #define fi first #define se second #define mk mak ...
- mysql ERROR 1366
mysql ERROR 1366 mysql> INSERT INTO tb_room VALUES ('9101','9','1',300,'9101',0,1,'超级豪华间','public ...
- hdu 1556 Color the ball(线段树区间维护+单点求值)
传送门:Color the ball Color the ball Time Limit: 9000/3000 MS (Java/Others) Memory Limit: 32768/3276 ...
- 三个通用的脚本,处理MySQL WorkBench导出表的JSON数据进SQLITE3
一个通用的脚本,处理MySQL WorkBench导出表的JSON数据进SQLITE3,创建的是FTS4的虚拟表 # -*- coding:utf-8 -*- import json import s ...
- Druid 架构
本篇译自 Druid 项目白皮书部分内容( https://github.com/apache/incubator-druid/tree/master/publications/whitepaper/ ...
- POJ 1182 食物链 【带权并查集/补集法】
动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形.A吃B, B吃C,C吃A. 现有N个动物,以1-N编号.每个动物都是A,B,C中的一种,但是我们并不知道它到底是哪一种.有人用两种说 ...
- Flask实战第62天:帖子详情页布局
在templates/front/下创建详情页面front_pdetail.html 编辑front.views.py创建详情页的视图函数 from flask import abort ... @b ...
- Xamarin XAML语言教程模板视图TemplatedView(一)
Xamarin XAML语言教程模板视图TemplatedView(一) 模板视图TemplatedView 与模板页面相对的是TemplatedView,它被称为模板视图,它的功能和模板页面类似,也 ...