• 数组类型参数传递问题:$.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()方法获取到数据,否则会解析出错。

  • 相关阅读:
    JS 数组及函数的应用
    JavaScript 基础知识点
    利用css布局效果图
    css 区块与盒子模型
    JS数组及函数的应用
    JavaScript基础
    近期总结12.30
    层叠样式与盒子模型
    PHP课后小结 2017.12.22
    PHP课后小结 12.20
  • 原文地址:https://www.cnblogs.com/goloving/p/7676811.html
Copyright © 2020-2023  润新知