前端用AJAX把数组传给后端控制器数组参数的方法

前端之家收集整理的这篇文章主要介绍了前端用AJAX把数组传给后端控制器数组参数的方法前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
前端用AJAX把数组传给后端控制器数组参数的方法

分两种情况:
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,完毕!

猜你在找的Ajax相关文章