spring mvc ajax 后台向前台返回list

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring mvc ajax 后台向前台返回list相关的知识,希望对你有一定的参考价值。

我在项目里通过ajax请求,后台向前台返回了一个list,接收并成功使用。
但是奇怪的是,我为什么在网上看到好多人都说,前台无法接受list,得用json做交互,
可为什么我就成功返回list并使用了呢?
后台:
@RequestMapping("leftMenu")
@ResponseBody
public List<Resources> getResource()
return dao.getResources();

前台:
$.ajax(
type: "post",
url: "layout/leftMenu.do",
success:function(data)
var list = data;

);

你这段代码返回的是json数据
虽然你的方法返回值写的是List类型
但由于Spring MVC中的@ResponseBody注解会自动把返回的数据转换成jackson数据

所以最终在前端得到的是json数据
而不是List类型
参考技术A 你是怎么返回的 贴端代码看看 前端有个datatype:你有事怎么写的追问

我在上面补充了代码部分。

追答

@responsebody会自动将你的list转成json。所以你前台接受的我可以确定不是list而是json

ajax异步请求获取后台数据,java mvc 后台应该如何封装各种实体类数据?

比如后台返回一个User对象数组加一个Address对象二维数组

参考技术A 可以使用jsonObject来封装。封装好的格式大概是这样:
"Address":["Address1","Address2"],"user":["user1","user2"]追问

这个泛型的实体类怎么写,请求的这个方法怎么写呢

追答

在请求的controller上面加上@ResponseBody 就是返回数据 不会返回页面。jsonObject定义:jsonObject result = new jsonObject();

参考技术B 那就新建一个对象,把User和Address都当成属性。
public class AjaxResult
private User[] user;
private Affress[] address;
public User[] getUser()
return user;


public void setUser(User[] user)
this.user = user;


public Affress[] getAddress()
return address;


public void setAddress(Affress[] address)
this.address = address;

本回答被提问者采纳

以上是关于spring mvc ajax 后台向前台返回list的主要内容,如果未能解决你的问题,请参考以下文章

Spring MVC 向前台页面传值-ModelAndView

后台向前台输出 换行“ ”

ajax异步请求获取后台数据,java mvc 后台应该如何封装各种实体类数据?

jquery的ajax与spring mvc对接注意事项

ajax返回数据之前的loading等待

Spring Mvc模式下Jquery Ajax 与后台交互操作