其他分享
首页 > 其他分享> > jQuery $.ajax传递数组的traditional参数传递必须true

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();
}

 

标签:jQuery,selectUsers,String,value,traditional,ajax,true,out
来源: https://blog.51cto.com/u_14302606/2812697