qq_38892945
2018-07-16 07:36
采纳率: 78.6%
浏览 1.3k
已采纳

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

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

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

12条回答 默认 最新

  • 疯狂的熊猫Npe 2018-07-16 08:58
    已采纳

    同意楼上说法,在实际开发中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);
    
        }
    
    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • 倾世烟火为你而唱 2018-07-16 07:41
    在你后台的方法提上面加上  @ResponseBody
    如:
    @RequestMapping("/searchChartsData")
        public @ResponseBody List<...> searchChartsData(){
            ...
            return list;
        }
    

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

    评论
    解决 无用
    打赏 举报
  • xwz178021208 2018-07-16 07:41

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

    评论
    解决 无用
    打赏 举报
  • xwz178021208 2018-07-16 07:44

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

    评论
    解决 无用
    打赏 举报
  • detusky 2018-07-16 08:03

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

    评论
    解决 无用
    打赏 举报
  • m0_37755869 2018-07-16 08:03

    在浏览器的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);
    }

    });
    
    评论
    解决 无用
    打赏 举报
  • I_haoxue 2018-07-16 08:05

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

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

    评论
    解决 无用
    打赏 举报
  • shyboy0358 2018-07-16 08:08

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

    // 返回消息
    private String message;
    
    private T model;
    
    private List<T> modelList;
        }
    

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

    评论
    解决 无用
    打赏 举报
  • 不潇洒的鱼 2018-07-16 09:56

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

    评论
    解决 无用
    打赏 举报
  • xq940919 2018-07-17 02:35

    后台代码注意要点:

    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的判断,然后在进行拼接

    评论
    解决 无用
    打赏 举报
  • jc小成 2018-07-17 09:43

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

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

    评论
    解决 无用
    打赏 举报
  • 编程爱好者熊浪 2018-07-21 04:09

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

    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题