数组类型参数传递问题:$.ajax传递数组的traditional参数传递必须true

数组类型参数传递:

  若一个请求中包含多个值,如:(test.action?tid=1&tid=2&tid=3),参数都是同一个,只是指定多个值,这样请求时后台会发生解析错误,应先使用 tradititonal 格式化

复制代码
$.ajax({
    type:"post",
    url:"test.action",
    data:{
        tid:[1,2,3]
    },
    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=="1"){
                alert("删除成功");
            }
        }
    });
}
复制代码

2、后台Action代码

复制代码
public String delete(){
    String[] ids=request.getParameterValues("selectUsers");  
    System.out.println(ids.toString());
    PrintWriter out = null;
    out.write("1");
    return home();
}
复制代码

总结:

  当ajax传的data数据是数组时,必须设置traditional参数,并为true,然后后台才可以通过request.getParameterValues()方法获取到数据,否则会解析出错。

 

posted @   古兰精  阅读(3331)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示