目录

前后端联调之Form表单提交数组

目录

前后端联调之Form表单提交数组

案例:

后端以 Form 表单的 Content-type 形式接收 Integer 数组,接口和前端代码如下,前后端联调时,后端接收不到前端传递的参数

接口:	@ResponseBody
   		@RequestMapping("/testIntegerArray")
		public Object o(Integer[] ids){ return "" }
		
前端:	var ids = new Array(1,2,3);
		$.ajax({
		    type:"post",
		    url:"testIntegerArray",
		    // data:{"ids":ids}, 请求状态为500
		    // data:{"ids[]":ids}, 请求状态为500
		    success:function(data){
		    }
		});

解决方案一:

前端将数组转成以逗号分隔的字符串,将字符串作为参数传递, Spring 可以识别前端传递的参数,并且赋值到数组中

接口不变:
		@ResponseBody
   		@RequestMapping("/testIntegerArray")
		public Object o(Integer[] ids){ return "" }
		
前端:	var ids = new Array(1,2,3);
		var idStr = ids.join();
		$.ajax({
		    type:"post",
		    url:"testIntegerArray",
		    data:{"ids":idStr}, 
		    success:function(data){
		    }
		});

https://i-blog.csdnimg.cn/blog_migrate/bf5d7984a21cfab5bccac7019d6d7014.png

解决方案二:

后端开发人员在接口的参数前使用 @RequestParam 注解,指定后端参数匹配前端参数的名称

接口使用 @RequestParam 注解:
		@ResponseBody
   		@RequestMapping("/testIntegerArray")
		public Object o(@RequestParam("ids") Integer[] ids){ return "" }

前端不变:	var ids = new Array(1,2,3);
		$.ajax({
		    type:"post",
		    url:"testIntegerArray",
		    data:{"ids":ids}, 
		    success:function(data){
		    }
		});

https://i-blog.csdnimg.cn/blog_migrate/de9aea944484b96ba62655f4a6166e7c.png