jQuery $.ajax傳遞陣列的traditional引數傳遞必須true
阿新 • • 發佈:2019-01-08
起初我認為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(); }