강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

김용민님의 프로필 이미지
김용민

작성한 질문수

비전공자를 위한 진짜 입문 올인원 개발 부트캠프

[그랩마켓] axios로 네트워크 통신하기

아까 문제는 해결했습니다 이번엔 여기서 문제가 발생하네요

작성

·

179

1

<html>
    <head>
        <meta charset="utf-8">
        <title>그랩마켓</title>
        <link href="index.css" type="text/css" rel="stylesheet" />
        <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
    </head>
    <body>
        <div id="header">
            <div id="header-area">
                <img src="images/icons/logo.png" />
            </div>
        </div>
        <div id="body">
            <div id="banner">
                <img src="images/banners/banner1.png" />
            </div>
            <h1>판매되는 상품들</h1>
            <div id="product-list"></div>
        </div>
        <div id="footer"></div>
    </body>
    <script>
        axios
        .get(
            "https://66571123-1901-4ee7-9a30-2f64f6e3d2f7.mock.pstmn.io/products"
        )
        .then(function (result) {
            console.log("통신 결과 : ", result);
            const products = result.data.products;

            let productsHtml = "";
            for (var i = 0; i < products.length; i++) {
              let product = products[i];
              productsHtml =
                    productsHtml +
                    '<div class="product-card">' +
                    "<div>" +
                    '<img class="product-img" src="' +
                    product.imageUrl +
                    '" />' +
                    "</div>" +
                    '<div class="product-contents">' +
                    '<span class="product-name">' +
                    product.name +
                    "</span>" +
                    '<span class="product-price">' +
                    product.price +
                    "원" +
                    "</span>" +
                    '<div class="product-seller">' +
                    '<img class="product-avatar" src="images/icons/avatar.png" />' +
                    "<span>" +
                    product.seller +
                    "</span>" +
                    "</div>" +
                    "</div>" +
                    "</div>";
            }
            document.querySelector("#product-list").innerHTML = productsHtml;
        })
        .catch(function (error) {
            console.log("error 발생 : ", error);
        }); 
        
        
    </script>
</html>

답변 2

1

그랩님의 프로필 이미지
그랩
지식공유자

현재 네트워크 요청을 해보니 Postman Mock서버의 응답 형식이 잘못된 것 같아요.

{ "products" : [ { "name": "농구공", "price": 10000, "seller": "조던", "imageUrl": "images/products/basketball1.jpeg", }, { "name": "축구공", "price": 50000, "seller": "메시", "imageUrl": "images/products/soccerball1.jpg", }, { "name": "키보드", "price": 15000, "seller": "그랩", "imageUrl": "images/products/keyboard1.jpg", } ] }

위 데이터가 실제로 오는 데이터인데, JSON을 작성할 때 마지막에 ,를 제거해주셔야 합니다.
포스트맨을 수정하고 다시 테스트해보세요!

김용민님의 프로필 이미지
김용민
질문자

해결했습니다 감사합니다!! 혹시  ,가 왜 오류를 발생시켰는지 알 수 있을까요????

이러한 오류가 발생했을경우 오류를 빨리 해결할 수 있는 약간의 팁같은것도 알려주시면 감사하겠습니다.!!!

그랩님의 프로필 이미지
그랩
지식공유자

JSON의 기본 문법상 객체의 마지막에 ,를 붙이면 오류가 발생해요!

postman에서는 보통 밑에 빨간줄로 에러를 표시하는데 저장이 되서 실수할 여지가 있는 것 같네요 ㅎㅎ

팁의 경우 딱 한가지만 한다고 하기보단 이런 문제들을 여러번 직면하고 해결하면서 생긴다고 생각해요 ㅎㅎ JSON의 기본 문법을 조금 더 공부해도 좋을 것 같습니다😁 

그랩님의 프로필 이미지
그랩
지식공유자

삽질하는 과정이 길어지면 질문 남겨주시면 제가 도움드릴 수 있구요. 화이팅!

0

김용민님의 프로필 이미지
김용민
질문자

error 발생 :  TypeError: Cannot read property 'length' index.html:63  of undefined

    at index.html:33

이렇게 오류가 발생합니다

김용민님의 프로필 이미지
김용민

작성한 질문수

질문하기