ssm框架 前端界面ajax无返回的问题

  问题:博主在写代码是遇到了一个比较尴尬的问题,在其他人上面都运行的好好的ajax代码在自己的项目上面就怎么也收不到返回值。

  

$.ajax({
            url:'loginAdd',
            type:'post',
            data:login,
            success:function(){
                alert(111);
            }
        });

controller层

    @RequestMapping(value="loginAdd",method=RequestMethod.POST)
    @ResponseBody//后来插入的代码
    public String add(Login login,Model m) {
        //loginService.save(login);
        return "redirect:/index.jsp";
    }

  经过一番努力查看到ajax通过post请求查看网络响应发现,代码有返回,但是返回的是一个视图。所以到这个时候博主就更尴尬了,所以经过一番查阅资料:

  发现在controller层方法的返回值是作为一个视图的,而不是作为一个响应报文返回的。

所以博主加了

  @ResponseBody 

1、

  @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML

  数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

2、  

  @RequestMapping("/login")
  @ResponseBody
  public User login(User user){
    return user;
  }
  User字段:userName pwd
  那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'

  效果等同于如下代码:
  @RequestMapping("/login")
  public void login(User user, HttpServletResponse response){
    response.getWriter.write(JSONObject.fromObject(user).toString());
  }

 转载至: https://www.cnblogs.com/qiankun-site/p/5774325.html

最终得出了一个结论:在ajax请求是将controller层的方法前加上@ResponseBody,就可以将方法返回的
参数作为响应报文,而不是视图界面

1、

  @responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML

  数据,需要注意的呢,在使用此注解之后不会再走试图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。

2、  

  @RequestMapping("/login")
  @ResponseBody
  public User login(User user){
    return user;
  }
  User字段:userName pwd
  那么在前台接收到的数据为:'{"userName":"xxx","pwd":"xxx"}'

  效果等同于如下代码:
  @RequestMapping("/login")
  public void login(User user, HttpServletResponse response){
    response.getWriter.write(JSONObject.fromObject(user).toString());
  }

猜你喜欢

转载自www.cnblogs.com/li-yi-learn/p/8948430.html
今日推荐