(내공100)Ajax 최근등록 순, 좋아요순 기능구현 질문드립니다.

(내공100)Ajax 최근등록 순, 좋아요순 기능구현 질문드립니다.

작성일 2023.11.09댓글 1건
    게시물 수정 , 삭제는 로그인 필요

페이지에서 select 로 조회수 높은 순, 최근 등록일 순으로 정렬하려고 합니다.

반복할 내용은 

<div class="row" id="boardtable">
    <c:forEach var="board" items="${sharing}">
  
        <div class="col-6 col-md-4">
            <div class="card mb-7">
                <div class="card-img">
                    <button class="btn btn-xs btn-circle btn-white-primary card-action card-action-end" onclick="likePost(${board.brd_num})">
                        <i class="fe fe-heart"></i>
                    </button>
                   <button class="btn btn-xs w-100 btn-dark card-btn" onclick="location.href='detailSharing?user_num=${board.user_num}&brd_num=${board.brd_num}'">
    <i class="fe fe-eye me-2 mb-1"></i> 자세히 보기
</button>

                  <img class="card-img-top" src="${pageContext.request.contextPath}/upload/${board.img}" alt="..." style="width: 100%; height: 250;">
</div>
                <div class="card-body fw-bold text-center">
                    <a class="text-body" href="detailSharing?user_num=${board.user_num}&brd_num=${board.brd_num}">
                        ${board.title}
                    </a><p>
                    <a class="text-primary" href="detailSharing?user_num=${board.user_num}&brd_num=${board.brd_num}">
                        ${board.price}원</a><p>
                    <a class="text-primary"><i class="fas fa-heart me-1"></i> ${board.like_cnt}</a>
                    <i class="fe fe-eye me-1 mb-1" style="margin-left: 30px;"></i> ${board.view_cnt}
                   
</div>
 
            </div>
        </div>
    </c:forEach>
</div>


이고

function renderTable(data) {
    if (data && data.length > 0) {
        var tableHTML = 'boardtable'; // 초기화된 테이블 시작
        for (var i = 0; i < data.length; i++) {
            var board = data[i];
            tableHTML += `
                <tr>
            <div class="col-6 col-md-4">
                <div class="card mb-7">
                    <div class="card-img">
                        <button class="btn btn-xs btn-circle btn-white-primary card-action card-action-end" onclick="likePost(${board.brd_num})">
                            <i class="fe fe-heart"></i>
                        </button>
                       <button class="btn btn-xs w-100 btn-dark card-btn" onclick="location.href='detailSharing?user_num=${board.user_num}&brd_num=${board.brd_num}'">
        <i class="fe fe-eye me-2 mb-1"></i> 자세히 보기
    </button>

                      <img class="card-img-top" src="${board.img}" alt="..." style="width: 100%; height: 250;">
    </div>
                    <div class="card-body fw-bold text-center">
                        <a class="text-body" href="detailSharing?user_num=${board.user_num}&brd_num=${board.brd_num}">
                            ${board.title}
                        </a><p>
                        <a class="text-primary" href="detailSharing?user_num=${board.user_num}&brd_num=${board.brd_num}">
                            ${board.price}원</a><p>
                        <a class="text-primary"><i class="fas fa-heart me-1"></i> ${board.like_cnt}</a>
                        <i class="fe fe-eye me-1 mb-1" style="margin-left: 30px;"></i> ${board.view_cnt}
                       
    </div>
     
                </div>
            </div>
                   </tr>
            `;
        }
        tableHTML += '</table>'; // 테이블 닫기
        $('#boardtable').html(tableHTML); // boardtable에 새로운 데이터로 업데이트된 테이블 렌더링
    } else {
        $('#boardtable').html('<p>검색 결과가 없습니다.</p>');
    }
}

$("#sortOption").change(function() {
    var sortOption = $("#sortOption").val();

    $.ajax({
        type: "GET",
        url: "loadSortedPosts",
        data: { sort: sortOption },
        dataType: "json",
        success: function(data) {
            console.log("응답 데이터: ", data);
            renderTable(data); // 테이블 렌더링 함수 호출
        },
        error: function(xhr, status, error) {
            console.log("정렬 아작스 호출 실패: " + error);
        }
    });
});
});

이렇게 하니 데이터를 불러오질 못하네요
찾아보니 
jstl/el과 자바스크립트를 섞어서 사용이 불가능해서 오류가 생기는 것 같은데 
해결책 알려주시면 감사하겠습니다.

컨트롤러는 

@GetMapping("/loadSortedPosts")
@ResponseBody
public List<Board> loadSortedPosts(HttpServletRequest request) {
System.out.println("JkController jbs.loadSortedPosts start....");
    String sortOption = request.getParameter("sort");
    List<Board> loadSortedPosts = jbs.loadSortedPosts(sortOption);
    return loadSortedPosts;
 

이렇게 작성했습니다.



profile_image 익명 작성일 -

Ajax를 사용하여 조회수 높은 순과 최근 등록일 순으로 게시물을 정렬하려면, 클라이언트에서 서버에 정렬 방식을 전달하고 서버에서는 해당 방식에 맞게 데이터를 정렬하여 반환하는 기능을 구현해야 합니다.

가스센서 위치 질문드립니다(내공100)

... 지식파트너는 네이버지식iN에 등록질문에 대하여 해당... 위치 질문드립니다(내공100) 귀뚜라미 보일러 거꾸로 new 콘덴싱을 사용하고 있습니다. 그런데 최근에 보일러가...

국가유공자등록여부질문입니다.(내공100)

... 최근 목이 부은것은 보고 갑상선이 의심이 되어 병원에 가보자고 해서, 병원에 가서 진료결과, 갑상선기능항진증... 답변부탁드립니다. 꾸벅 ㅠㅠ 귀하의 사안 관련...

초보주식 질문드립니다. 내공100

안녕하세요 초보 주식 질문드립니다. 24살 청년으로 이제... 또한 최근 스마트폰으로 주식을 거래하는 MTS-모바일... 가능하며 '체험하기' 기능을 통해 시세 조회부터(20분지연)...

국제 IT 자격증 질문드립니다.내공(100)

... 싶어서 질문드립니다. 유학갈려면 아직 1년정도 시간이... 커리어는 최근 인사담당자와 헤드헌터 연구원 등... 현재 국내 19개 금융회사에 등록된 인터넷뱅킹 이용자수는...

[내공100] 블랙박스에 대해서 질문드립...

... 질문은 이 3가지이고, 내공100을 드리니 시원한 답변부탁드립니다 블랙박스 구매 및 활용과 관련한 궁금증을... 페북처럼 좋아요많이 누른다고 랭킹이 오르는 것이...