티스토리 뷰

Server/Node.js

[Node.js] AJAX로 삭제 요청하기

공부하는 승승 2023. 7. 15. 18:03

- HTML에서 DELETE 요청은 불가능

 

해결방법

  1. method-override 라이브러리 이용
  2. JavaScript AJAX 이용

*AJAX란? - 새로고침 없이 서버에서 요청하는 것을 도와주는 JS문법

 

 

<list.ejs>

<!-- ejs에서 변수 담기  -->
<!-- <%= %> -->

<!-- 서버에서 가져온 투두리스트 -->
<h4 class="ml-2 my-3">서버에서 가져온 투두리스트</h4>
<ul class="list-group">
    <% for (var i = 0; i < posts.length; i++) { %>
    <li class="list-group-item">
        <p>글번호: <%= posts[i]._id %></p>
        <h4>할일 제목: <%= posts[i].title %></h4>
        <p>할일 마감날짜: <%= posts[i].date %></p>
        <button class="delete" data-id="<%= posts[i]._id %>">삭제</button>
    </li>
    <% } %>
</ul>
<script src="https://cdn.jsdelivr.net/npm/jquery@3.5.1/dist/jquery.min.js"></script>

<script>
    $('.delete').click(function (e) {
        var 글번호 = e.target.dataset.id;
        var 지금클릭한글 = $(this);

        $.ajax({
            method: 'DELETE',
            url: '/delete',
            data: { _id: 글번호 },
        })
            .done(function (결과) {
                console.log('성공!');
                지금클릭한글.parent('li').fadeOut();
            })
            .fail(function (xhr, textStatus, errorThrown) {
                // , 에러코드, 에러메시지
                console.log('실패!');
                console.log(xhr, textStatus, errorThrown);
            });
    });
</script>

 

<server.js>

/* DB에서 데이터 삭제하기 */
app.delete('/delete', function (요청, 응답) {
    console.log(요청.body); // 요청시 함께 보낸 데이터를 찾기(게시글 번호)
    요청.body._id = parseInt(요청.body._id); // 문자가 된 id값을 다시 숫자로 변환

    // db.collection('post').deleteOne({삭제할 항목}, function(){
    db.collection('post').deleteOne(요청.body, function (에러, 결과) {
        console.log('삭제완료');
        응답.status(200).send({ message: '성공' });
    });
});

 

 

'Server > Node.js' 카테고리의 다른 글

[Node.js] PUT; 수정하기  (0) 2023.07.16
[Node.js] URL parameter; 상세페이지  (0) 2023.07.16
[Node.js] auto increment; 글 번호를 달자  (0) 2023.07.14
[Node.js] MongoDB 세팅  (0) 2023.07.13
[Node.js] REST API  (0) 2023.07.12
댓글