前端用AJAX把数组传给后端控制器数组参数的方法
分两种情况:
1. 数组元素是基本类型数据的数组。
2. 数组元素是普通类对象的数组。
下面分别讲解。
一、数组元素是基本类型数据的数组
这种情况比较简单,下面是示例代码。
分两种情况:
1. 数组元素是基本类型数据的数组。
2. 数组元素是普通类对象的数组。
下面分别讲解。
一、数组元素是基本类型数据的数组
这种情况比较简单,下面是示例代码。
控制器代码:
@Controller @RequestMapping(value = "testctrl") @ResponseBody @RequestMapping(value = "testfun",method = RequestMethod.POST) public void testFun(@RequestParam(value="arrint[]") int[] arrint){ // 用 Integer 类型也可以。 return; } }
前端JS代码:
<script type="text/javascript"> $(function(){ alert("here is test."); test(); }); function test() { var arr = [1,3,5]; $.ajax({ url: "/test/testctrl/testfun",type: 'POST',async: true,data: {"arrint[]":arr},dataType:'JSON',success:function(data){ // ... } }); } </script>
二、数组元素是普通类对象的数组
这种情况比较复制,要多写点代码,如下。定义一个类:
public class TestXfer { private Integer testid; private String teststr; public Integer getTestid() { return testid; } public void setTestid(Integer testid) { this.testid = testid; } public String getTeststr() { return teststr; } public void setTeststr(String teststr) { this.teststr = teststr; } }
控制器代码:
@Controller @RequestMapping(value = "testctrl") public class TestController { @ResponseBody @RequestMapping(value = "testfun",method = RequestMethod.POST) public void testFun(String testxfers){ Object val; JSONArray jsnarr = JSONArray.fromObject(testxfers); TestXfer[] arrTestxfer = new TestXfer[jsnarr.size()]; for(int i=0; i<jsnarr.size(); i++){ arrTestxfer[i] = new TestXfer(); JSONObject jsnobj = jsnarr.getJSONObject(i); if(null != (val = jsnobj.get("testid"))) arrTestxfer[i].setTestid((Integer) val); if(null != (val = jsnobj.get("teststr"))) arrTestxfer[i].setTeststr(val.toString()); } return: } }
前端JS代码:
<script type="text/javascript"> $(function(){ alert("here is test."); test(); }); function test() { var arr= [ // { testid:1,teststr:'str1' },{ testid:1 },// { testid:2,teststr:'str2' },{ teststr:'str2' },{ testid:3,teststr:'str3' } ]; $.ajax({ url: "/test/testctrl/testfun",data: {testxfers:JSON.stringify(arr)},success:function(data){ // ... } }); } </script>
Ok,完毕!