java前后台的交互,尽量详细点哦

图片说明我想在前台的ajax里面的success得到这个list图片说明怎么做呢

同意楼上说法,在实际开发中Controller层对于JSON数据应该是需要经过封装从而再次返回的。分享一下一个比较简单的封装类

public class Message implements Serializable {

/**
 * 返回结果JSON封装类
 */
private static final long serialVersionUID = 1L;
private boolean           success          = true;
private String            msg              = "成功";
private Object obj;

public Object getObj() {
    return obj;
}

public void setObj(Object obj) {
    this.obj = obj;
}

public Message(boolean success, String msg) {
    super();
    this.success = success;
    this.msg = msg;
}

public boolean isSuccess() {
    return success;
}

public void setSuccess(boolean success) {
    this.success = success;
}

public String getMsg() {
    return msg;
}

public void setMsg(String msg) {
    this.msg = msg;
}

public Message() {
    super();
}

public Message(String msg) {
    super();
    this.msg = msg;
}

}

Controller层的RequestMapping映射器方法返回方法可以为Message 例:

    public Message getAll(){
                Message msg = null;

                //返回结果
                msg.setData(true,list);

    }
在你后台的方法提上面加上  @ResponseBody
如:
@RequestMapping("/searchChartsData")
    public @ResponseBody List<...> searchChartsData(){
        ...
        return list;
    }

这样前端ajax就可以取到纯数据了

在请求方法上加入注解 @RequestBody

ajax方法体中 加入 contentType: "application/json",dataType:"json",

用springboot就不需要@ResponseBody注解 前台可以用form提交表按的方式

在浏览器的network里,在response里能看到后台返回的数据的情况下,
申明一个receive
var that = this;//这里涉及到范围的问题
$.ajax({
url: URL,
type: 'POST',
dataType:"json",
success: function (data) {
if(data.code=="200"){
that.receive = data.result;
}else{
alert(data.reason);
}
},
error:function(evt){
console.log(evt);
}

});

@RequestMapping("/searchChartsData")
@RequestBody //意思就是返回JSon格式的数据

前端就可以取到key与value对应的数据

一般情况下,是定义一个通用的returnResult类,里面定义code,message,object等。
public class BaseRtnValue {
// 返回值
private int code;

// 返回消息
private String message;

private T model;

private List<T> modelList;
    }

还有贴出来的后端代码有个错误,需要加@ResponseBody。

SpringMVC默认会根据你返回的结果查找对应的视图解析服务器,然后返回到对应的页面。
如果想直接返回数据,常用的方法就是:在方法体上增加@ResponseBody注解;
可以看下SpringMVC的原理相关的文档,有助于这方面的理解

后台代码注意要点:

1.后台给前台传递值的时候大多数分为以下几种情况:

 a.list

 b.map

 c.对象

 d.字符串

那么所要注意的:

多数的情况下,会出现前台传递参数到后台,那么我们需要多传递的参数进行验证,如:传递的是对象,那么我们需要对对象进行是否为null的验证,如果为null的话,那么得到的就是一个空的list或者是空的新对象,在传递到前台页面没有数据,显得没有意义;如果传递的是字符串,那么我们需要对字符串进行一下判断,首先要做的就是判断是否为null,这步很重要,且判断字符串的长度是否大于0;

那么在后台传递到前台是会有几种形式:同步传递以及异步(ajax方法):

在同步传递时,大多数的情况是没有什么需要注意的,但是ajax的方式就不同了,有多种的情况,一般的情况有一下两种:一种是text的形式,这种形式的多数是传递的成功与失败的时候使用;另一种是json的形式,对于json格式的数据又分为多种的情况:1.json的数据用于ajax中数据地拼接,很方便这种的情况主要是针对map以及list的数据格式,单独的对象是不行的,单独的对象只能是进行同步的交互。

2.前台获取到后台的传值所要注意的,主要的是分为两种也就是同步和异步的情况;

同步时:同步的情况下,多数是传递的为单个对象的时候,那么获取数据的时候,就需要使用到EL的表达式,那么在使用之前所要准备是就是引入EL表达式的文件包如下:

<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>

其次就是对传递过来的对象进行判断,判断是否为空如下:/c:if,其次在使用进行遍历循环数据

异步时:也就是ajax的获取的时候,需要对传递过来的数据进行是否为null,且是否length是否大于0的判断,然后在进行拼接

正确答案:(求楼主给积分)
@RequestMapping下面加上@ResponseBody

@ResponseBody :将返回给前端的数据转换成json数据格式,因为你前端用的是ajax请求,所有请求成功时候可以在success函数里面
拿到后台返回的json数据。

1、既然前台是ajax提交,后台就必然加上@ResponseBody注解,要不然他就是是一个返回视图。
2、定义一个success类,里面最少包含一个泛型T,最好加上一个code和一个msg。
3、定义返回类型为success,之后前台ajax解析 data.data.对象存在get方法的属性名称。