微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

jQuery $.ajax传递数组的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。

一:前台jquery

deleteall() {    var selectUsers = new Array();    //var selectUsers = null;
    $(":checkBox[name='userID']").each(function() {        if ($(this).attr("checked")) selectUsers.push($(this).val());        //selectUsers += "," + $(this).val();    })    //alert(selectUsers);    $.ajax({        //async : false,
        Traditional: true,
        type: "post",
        url: "elecUserAction_delete.do",
        data: {
            selectUsers: selectUsers
        },
        success: function(responsText) {            if (responsText == "1") {
                alert("删除成功");
            }
        }
    });
}

二:后台Action代码

public String delete() {    //ActionContext context=ActionContext.getContext(); 
    //HttpServletRequest request=(HttpServletRequest)context.get(ServletActionContext.HTTP_Request); 
    String[] ids = request.getParameterValues("selectUsers");
    System.out.println(ids.toString());
    PrintWriter out = null;
    out.write("1");    return home();
}

 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐