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

  • 相关阅读:
    Taglib笔记摘自http://tech.acnow.net/Html/Program/Java/200204/10/092611588.shtml
    Subversion安装手记
    java 数组排序
    JAVA 反编译
    开发EJB
    HTML 4.0 语 法 教 学 转载http://chinese.allproducts.com.tw/GB/html/#t1
    javaCollectionslist
    Ruby on Rack #1 与Rack的第一次亲密接触
    Ubuntu 安装 ruby on rails [转]来源:Ubuntu社区 作者:承古韵
    收集整理的对#!bin/sh的认识
  • 原文地址:https://www.cnblogs.com/goloving/p/7676811.html
Copyright © 2011-2022 走看看