BACK-END/Spring

[Spring] ajax url을 통해 댓글 삽입 후 문서이동 400 에러 해결법

단비_danbee 2020. 10. 28. 11:39

ajax 을 사용해보고 싶어서 java문서로 이동하는 부분을 ajax 으로 구현했는데 원인모를 400 에러가 떴다.

 

| view 단

댓글작성 버튼을 누르면 아래의 ajax 함수가 실행되고 쿼리와 java 문서에는 전혀 이상이 없기 때문에 정상적으로 INSERT 된다. 하지만 제일 큰 문제점, 새로고침이 안되서 작성된 댓글이 보이지 않는다. 또한 400에러가 나타나서 뒤로가기, 새로고침을 해야만 작성된 댓글을 볼 수 있다.

 

| ajax 으로 java 메소드로 이동하는 방식 (비권장)

<script>
			$(document).ready(function(){
				$('#replyadd').on('click', function(){
			        $.ajax({
			            url: "replyInsert.do",
			            type: "POST",
			            data: $('#replyform').serialize(),
			            success: function(data){
			            	alert("reply added");
			            	//location.href='community_detail.do?idx='+${dto.board_idx};
			            },
			            error: function(){
				            alert("failed to add reply");
				        }
			        });
			    });
			});	
	</script>

 

하지만, ajax은 화면이 변하지 않는 비동기 처리 방식이기 때문에 댓글이 작성되고 문서가 변경되려면 ajax 이 아닌 form 태그 action 속성을 이용하는것이 맞다는것을 무려 이틀에 거쳐 깨닫게 되었다. ㅜㅜ ajax 을 사용하고 싶다고 해서 막 쓰는게 아니고 적재적소에 적어야 한다는것..

 

 

| form 태그에 action 속성을 주는 방식으로 바꿨더니 문서 변경이 잘 된다.

<form id='replyform' action='replyInsert.do' method='post'>
		<input type='text' name='rcontent' class='input_reply'>
		<input type='hidden' name='board_idx' value='${dto.board_idx}'>
		<button class='submit__reply' id='replyadd'>댓글작성</button>
</form>

 

 

댓글수0