SSM整合html使用Ajax時,success獲取不到controller類的返回值的問題解決。
阿新 • • 發佈:2019-01-06
使用ajax對資料庫的執行刪除,資料可以正常刪除,就是controller方法可以執行,但是Ajax的success卻接收不到controller類刪除方法的返回值。卻一直執行Ajax的error。
我的ajax是這樣寫的:
$.ajax({ type: 'post', async: false, url: '/user/deleteUsersForXX_insert.do', success: function (data) { alert(data); }, error:function (data) { alert("錯誤!"); } } );
controller是這樣寫的:(不成功的原因是我這個方法沒有使用 @ResponseBody 註解)
@RequestMapping("/deleteUsersForXX_insert") public String deleteUsersForXX_insert(){ List<User> lists=new ArrayList<>(); for (int i = 6; i <7 ; i++) { User user=new User(); user.setId(i); user.setPassWord("12345"+i); user.setUserName("123"+i); lists.add(user); } int i=userService.deleteUsersForXX_insert(lists); System.out.println("插入成功條數:"+i); return "刪除成功條數:"+i; }
-
不成功原因有:
1、controller類裡面的方法沒有使用 @ResponseBody 註解 (一般是這個原因);
2、ajax的非同步處理問題(具體參考這個:ajax請求後臺,有時收不到返回值的解決辦法);
@responseBody註解的作用是將controller的方法返回的物件通過適當的轉換器轉換為指定的格式之後,寫入到response物件的body區,通常用來返回JSON資料或者是XML資料,需要注意的呢,在使用此註解之後不會再走試圖處理器,而是直接將資料寫入到輸入流中,他的效果等同於通過response物件輸出指定格式的資料。