ajax success 넘어가지 않을때 해결방법 @ResponseBody 에 대하여
전자정부프레임워크의 Spring 구조에서 ajax 사용 시 통신은 이상없이 이루어지는데 success로 넘어가지 않는 문제가 발생했다. DB저장도 되고, 데이터도 리턴해 주는데 ajax의 success로 넘어가지 않는 것이다. 문제는 controller에서의 @ResponseBody 를 해주지 않았기 때문! 몇날 몇일동안 왜안될까를 고민 했었는데 원인은 한줄이였다. 복사해 쓸줄만 알았지 기본지식의 부족을 다시한번 느꼈다. ajax 에서 success로 넘어가는 조건은 http 요청에 성공했을 경우이다. 그런데 @RequestMapping 메서드에 적용되면 해당 메소드의 리턴값을 http 응답데이터로 사용하는 @ResponseBody를 빼먹었으니 요청데이터가 없었던것 같다. 그럼 @RequestBody 와 @ResponseBody 에 대해서 알아보자. @RequestBody 와 @ResponseBody 어노테이션은 각각 HTTP 요청 몸체를 자바 객체로 변환하고 자바 객체를 HTTP 응답 몸체로 변환해주는데 사용된다. @RequestBody 어노테이션을 이용하면 HTTP 요청 몸체를 자바 객체로 전달 받을 수 있다. @RequestMapping 에 의해 POST 방식으로 전송된 HTTP 요청 데이터를 String 타입의 body 파라미터로 전달한다. @ResponseBody 어노테이션을 이용하면 자바 객체를 HTTP 응답 몸체로 전송 할 수 있다. @RequestMapping 메서드에 적용되면 해당 메소드의 리턴값을 HTTP 응답데이터로 사용한다. 문제가 발생했던 jsp 해당 ajax에서는 아무 문제가 없다. 아무 문제가 없는데 success로 넘어가지 않았다. 원인이였던 controller
cs
cs
-- 참고로 ajax 사용 시 이유 없이 error가 날 경우에는
async:false 옵션을 주세요. 이것만으로도 해결될 때가 있습니다.
(버튼클릭에 ajax를 걸어둬 중복호출될 경우 error발생)
'Programing > ajax' 카테고리의 다른 글
크롬 크로스도메인 이슈 CORS 간단히 해결하는 방법 (0) | 2017.11.07 |
---|---|
javascript, spring MVC, ajax 요청시 404 에러 원인 (0) | 2017.07.07 |
easyUi, ajax 파라미터 서버 한글 깨짐 해결 법 (0) | 2015.10.21 |
ajax 여러개 사용할 경우 꼬이는 문제 해결법 (0) | 2015.10.20 |
댓글