1. 程式人生 > >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();
}