스프링 부트 하루만에 배우기

12.9. 책 상세 화면에서 책 기록 기능 추가하기

연서은 2024. 8. 17. 11:51

책 상세 화면을 조금 수정해서 책 기록을 저장하는 기능을 추가해 보겠습니다.

목록으로 가는 버튼 아래에 하단의 코드를 추가합니다.
src/main/resources > templates.book > read.html

    <p>  
        <a th:href="@{/book/list}" th:text="목록으로"></a>  
    </p>  

    <!-- 여기까지는 기존에 작성한 코드입니다. -->  
    <!-- 아래는 신규 추가된 코드입니다. -->  

    <div id="book_log">  
    </div>  
    <p>  
        <input type="text" id="book_log_comment" />  
        <input type="text" id="book_log_page" placeholder="페이지" />            
        <input type="button" id="book_log_save" value="책 기록 저장" th:attr="data-bookId=${bookReadResponseDTO.bookId}" />  
    </p>  
    <script src="https://code.jquery.com/jquery-3.6.0.min.js" integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4=" crossorigin="anonymous"></script>  
    <script type="text/javascript">  
    $(document).ready(function(){  
        $("#book_log_save").click(function(){  
            var book_log_comment = $("#book_log_comment").val();  
            var post_data = {  
                bookId : $("#book_log_save").attr("data-bookId"),  
                comment : $("#book_log_comment").val(),  
                page : $("#book_log_page").val() != "" ? $("#book_log_page").val() : null  
            };  

            $.ajax({  
                type: "POST",  
                url : "/book-log/create",  
                data : JSON.stringify(post_data),  
                success : function(data){  
                    var append_html = "<p>"  + (data.page == null ? "" : "(p." + data.page + ".) ") + data.comment + "</p>";  
                    $("#book_log").append(append_html);  
                },  
                dataType : "json",  
                contentType : "application/json"  
            });  
        });  
    });  
    </script>  
    <!-- 신규 추가된 코드 끝 -->  
    <!-- 아래는 기존에 작성한 코드입니다. -->  
  </body>  
</html>  

다시 서버를 실행하고 http://localhost:8080/book/read/5 에 접속해 보세요. 그리고 책 기록 내용을 입력하고 저장해 보세요.