今天傳數組參數,居然不會用,記下來,加深印象。html
一、頁面ajax默認傳參java
function arrayParam(){ var contextPath = $('#contextPath').val(); var params = {}; params["names"] = ["張三", "李四", "王武"]; params["ages"] = [20, 26, 48]; var url = contextPath + "/array/getParamArray.do"; $.post(url, params, function(data){ alert(data); }); }
controller層ajax
@RequestMapping(value="/getParamArray") public String getParamArray(@RequestParam("names[]") String[] names, @RequestParam("ages[]") int[] ages){ LOG.info("getParamArray names={}, ages={}", Arrays.toString(names), Arrays.toString(ages)); return "viewName"; }
二、ajax傳數組參數,默認在參數名後面加[],這一點和表單傳參不同,若是想和表單傳參同樣,能夠以下數組
function arrayParam2(){ var url = contextPath + "/array/getParamArray.do"; var params = {}; params["names"] = ["張三", "李四", "王武"]; params["ages"] = [20, 26, 48]; $.ajax({ url: url, type: 'post', traditional: true, // 和表單傳數組參數同樣。 data:params, success:function(data){ alert(data); } }); }
這時controller層的參數名字沒有後面的[]括號了。app
@RequestMapping(value="/getParamArray2") public String getParamArray2(@RequestParam("names") String[] names, @RequestParam("ages") int[] ages){ LOG.info("getParamArray names={}, ages={}", Arrays.toString(names), Arrays.toString(ages)); return "viewName"; }
三、表單傳數組參數,參數名字能夠很靈活,後面可加[],可不加,controller層的參數名字要對應起來post
<form action="<%=contextPath %>/array/getParamArray2.do" method="post"> <table> <tr> <td>名字1</td><td><input name="names[]" value="張三" /></td> </tr> <tr> <td>名字2</td><td><input name="names[]" value="李四" /></td> </tr> <tr> <td>年齡1</td><td><input name="ages" value="30" /></td> </tr> <tr> <td>年齡2</td><td><input name="ages" value="25" /></td> </tr> <tr> <td><input type="reset" value="重置" /></td> <td><input type="submit" value="提交" /></td> </tr> </table> </form>
controller層的參數名字和form表單中的名字一致url
@RequestMapping(value="/getParamArray3") public String getParamArray3(@RequestParam("names[]") String[] names, @RequestParam("ages") int[] ages){ LOG.info("getParamArray names={}, ages={}", Arrays.toString(names), Arrays.toString(ages)); return "viewName"; }