[관련 게시글]
[원리의 이해]
댓글의 삭제의 포인트는 아래 두 가지이다.
- 해당 행을 선택해야 함
- 선택된 행을 'DB'와 '화면상'으로 삭제해야 함
- 삭제 시, 해당 data만 업데이트되어야 하기 때문에 비동기 ajax를 사용
[View][HTML]
지난 번 작성한 코드에 행을 선택하기 위해서 index를 부여해야 함으로 varStatus를 추가
삭제버튼을 클릭하면 현재 행번호를 매개변수로 'commentDeleteCheck' 함수가 실행
<div>
<table>
<c:forEach var="list" items="${commentList}" varStatus="status">
<!--status의 index를 출력-->
<tr id="cno1${status.index}">
<td>${list.nickName} | ${list.c_date}</td>
<td><input type="hidden" value="${list.r_no}"></td>
<td><input type="hidden" id="cnoNo${status.index}" value="${list.cno}"></td>
<td>
<c:choose>
<c:when test="${sessionScope.sessionId==list.id}">
<ahref="#" id="edit${status.index}" onclick="commentEdit(${status.index}); return false;">수정</a>
</c:when>
</c:choose>
</td>
<td>
<c:choose>
<c:when test="${sessionScope.sessionId==list.id}">
<a href="#" onclick="commentDeleteCheck(${status.index})">삭제</a>
</c:when>
</c:choose>
</td>
</tr>
</c:forEach>
</table>
</div>
[View][Ajax]
삭제 전, 삭제 여부 확인되면 해당 행의 (id + 행번호의 값)=(댓글번호)을 불러와 DB에서 delete하는 controller를 호출하고
화면에 보이는 내용은 제이쿼리를 통해 지워줄 수 있도록 함
/* 댓글 삭제 전 check */
function commentDeleteCheck(Vindex){
if (confirm("정말 삭제하시겠습니까?") == true){
var cnoNo = $('#cnoNo'+Vindex).val(); //cno값을 가져옴
$.ajax({
url : "${pageContext.request.contextPath}/commentDelete",
data : {cno : cnoNo},
dataType :'text',
success : function(data){
if(data == '1'){
$('#cno1'+Vindex).remove();
}
}
});
}else{
return false;
}
}
'Project > 2022.02_게시판 만들기' 카테고리의 다른 글
[스프링] 프로젝트 - 게시판 페이징 처리 (0) | 2022.02.19 |
---|---|
[스프링] 프로젝트 - 게시판 댓글 구현(댓글 수정 편) (0) | 2022.02.19 |
[스프링] 게시판 좋아요(추천) 구현(ID당 한 번만 좋아요하기) (0) | 2022.02.17 |
프로젝트 환경안내 (0) | 2022.02.16 |
[스프링] 프로젝트 - 게시판 댓글 구현(댓글 리스트 출력 편) (0) | 2022.02.15 |