본문 바로가기
스프링 (Spring)/SelectShop Project

Selectshop - 상품검색기능

by 후닝훈 2021. 8. 3.
반응형

execSearch

unction execSearch() {
    /**
     * 검색어 input id: query
     * 검색결과 목록: #search-result-box
     * 검색결과 HTML 만드는 함수: addHTML
     */
    // 0. 기존의 정보를 지워준다.
    $('#search-result-box').empty();
    // 1. 검색창의 입력값을 가져온다.
    let query = $('#query').val();
    // 2. 검색창 입력값을 검사하고, 입력하지 않았을 경우 focus.
    if (query == '') {
        alert("검색어를 입력해주세요.");
        $('#query').focus();
        return;
    }
    // 3. GET /api/search?query=${query} 요청
    $.ajax({
        type:'GET',
        url:`/api/search?query=${query}`,
        success:function(response){
    // 4. for 문마다 itemDto를 꺼내서 HTML 만들고 검색결과 목록에 붙이기!
            for (let i =0; i<response.length; i++){
                let itemDto = response[i];
                let tempHTML = addHTML(itemDto);
                $('#search-result-box').append(tempHTML);
            }
        }
    })


}

 

addHTML

function addHTML(itemDto) {
    /**
     * class="search-itemDto" 인 녀석에서
     * image, title, lprice, addProduct 활용하기
     * 참고) onclick='addProduct(${JSON.stringify(itemDto)})'
     */
    return ` <div class="search-itemDto">
            <div class="search-itemDto-left">
                <img src="${itemDto.image}" alt="">
            </div>
            <div class="search-itemDto-center">
                <div>${itemDto.title}</div>
                <div class="price">
                    ${numberWithCommas(itemDto.lprice)}
                    <span class="unit">원</span>
                </div>
            </div>
            <div class="search-itemDto-right">
             <!-- itemDto의 형태는 json이고, 괄호안에는 문자열을 써야 하기 때문에 Json.stringify를 사용해야한다. -->
                <img src="images/icon-save.png" alt="" onclick='addProduct(${JSON.stringify(itemDto)})'>
            </div>
        </div>`
}

 

반응형

댓글