(轉)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層方法的返回值因為配置MVC的原因導致:返回值是作為一個視圖的,而不是作為一個響應報文返回的。

 經過查閱其他人的博客發現  加了 @ResponseBody 的就可以返回一個響應報文了。

所以博主加了

  @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,就可以將方法返回的
參數作為響應報文,而不是視圖界面

2
如果想不跳轉前端界面同樣是使用@ResponseBody 返回值使用void或者返回String類型的變量使用空字符就可以了,或者返回null
參考至:


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM