본문 바로가기
JQuery/이론

jquery //$.ajax() //json으로 dataType : text(파싱필요) / json(파싱안해도 된다)//-->객체/배열/배열append

by SEOKIHOUSE 2023. 7. 5.
  • $.ajax()는 jQuery에서 제공하는 AJAX 요청


json으로 보낼 때 application/json하는거(클라 -> 서버)

1)json으로 바꿔서 보내도 되고

2)그냥 보내도 되는듯


  • 실제연습해보기(실행안되면 live server써야한다)


  • JSON으로 해보기

1)객체 하나만

third.txt


2)배열로 가져오기

  • dataType : text(파싱필요) / json(파싱안해도 된다)

json으로 쓰면 파싱할 필요 없이 바로 response[i]해서 가져오면된당
thirdjsonarray.txt

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/jquery-3.7.0.js"></script>
</head>
<body>
    <button onclick="getData()">click</button>
    <hr>
    <div id="demo">여기에 데이터가 표시된다</div>
    
    <script>
        function getData() {
            $.ajax({
                url : "thrid.txt",
                type : "get",
                dataType : "text",
                success : function(rep) { //this.responseText랑 같은 역할
                    let getData = JSON.parse(rep);
                    $("#demo").html("id:"+getData.id + "<br>pw:" +getData.pw +"<br>tel:" +getData.tel +"<br>name:"+getData.name);
                }
            });
        }
    </script>
    <hr>
    <br><br>
    <button onclick="getJson()">click</button>
    <hr>
    <div id="demo2">여기에 데이터가 표시된다</div>
    <script>
        function getJson() {
            $.ajax({
                url : "thirdjsonarray.txt",
                type : "get",
                dataType : "text",
                success : function(response) {
                    let getData = JSON.parse(response);
                    let together = 
                        "<table border='1'>"+
                            "<tr>"+
                                "<th>아이디</th>"+
                                "<th>비번</th>"+
                                "<th>전번</th>"+
                                "<th>이름</th>"+
                            "</tr>";
                    for(let i = 0; i<getData.length; i++) {
                        together += 
                        "<tr>"+
                            "<td>"+getData[i].id+"</td>"+
                            "<td>"+getData[i].pw+"</td>"+
                            "<td>"+getData[i].tel+"</td>"+
                            "<td>"+getData[i].name+"</td>"+
                        "</tr>";
                        // "id:"+getData[i].id + "<br>pw:" +getData[i].pw +"<br>tel:" +getData[i].tel +"<br>name:"+getData[i].name+"<hr>";
                    }
                    together += "</table>";
                    $("#demo2").html(together);
                }
            })

        }

    </script>
</body>
</html>
{"id" :"짱구1234","pw" :"1234","tel" :"010-1111-1111","name" :"짱구"}
[
    {"id" :"짱구1234","pw" :"1234","tel" :"010-1111-1111","name" :"짱구"},
    {"id" :"흰둥이1234","pw" :"1234","tel" :"010-2222-2222","name" :"흰둥이"},
    {"id" :"짱아1234","pw" :"1234","tel" :"010-3333-3333","name" :"짱이"}
]

3)배열 append로 가져오기

-->append쓰면 누를떄마다 추가돼서 처음에 비워주는것 empty를 쓰자

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="../js/jquery-3.7.0.js"></script>
</head>
<body>
    <button onclick="getData()">click</button>
    <hr>
    <div id="demo">여기에 데이터가 표시된다</div>
    
    <script>
        function getData() {
            $.ajax({
                url : "thrid.txt",
                type : "get",
                dataType : "text",
                success : function(rep) { //this.responseText랑 같은 역할
                    let getData = JSON.parse(rep);
                    
                    $("#demo").html("id:"+getData.id + "<br>pw:" +getData.pw +"<br>tel:" +getData.tel +"<br>name:"+getData.name);
                }
            });
        }
    </script>
    <hr>
    <br><br>
    <button onclick="getJson()">click</button>
    <hr>
    <div id="demo2">여기에 데이터가 표시된다</div>
    <script>
        function getJson() {
            $.ajax({
                url : "thirdjsonarray.txt",
                type : "get",
                dataType : "text",
                success : function(response) {
                    $("tbody").empty(); //append쓰면 계속 추가되니까 비워주는 것
                    let getData = JSON.parse(response);
                    $("tbody").append(
                        "<tr>"+
                                "<th>아이디</th>"+
                                "<th>비번</th>"+
                                "<th>전번</th>"+
                                "<th>이름</th>"+
                            "</tr>"
                    )
                    for(let i = 0; i<getData.length; i++) {
                        $("tbody").append(
                            "<tr>"+
                                "<td>"+getData[i].id+"</td>"+
                                "<td>"+getData[i].pw+"</td>"+
                                "<td>"+getData[i].tel+"</td>"+
                                "<td>"+getData[i].name+"</td>"+
                            "</tr>"
                        )}
                    
                    // let together = 
                    //     "<table border='1'>"+
                    //         "<tr>"+
                    //             "<th>아이디</th>"+
                    //             "<th>비번</th>"+
                    //             "<th>전번</th>"+
                    //             "<th>이름</th>"+
                    //         "</tr>";
                    // for(let i = 0; i<getData.length; i++) {
                    //     together += 
                    //     "<tr>"+
                    //         "<td>"+getData[i].id+"</td>"+
                    //         "<td>"+getData[i].pw+"</td>"+
                    //         "<td>"+getData[i].tel+"</td>"+
                    //         "<td>"+getData[i].name+"</td>"+
                    //     "</tr>";
                    //     // "id:"+getData[i].id + "<br>pw:" +getData[i].pw +"<br>tel:" +getData[i].tel +"<br>name:"+getData[i].name+"<hr>";
                    // }
                    // together += "</table>";
                    // $("#demo2").html(together);
                }
            });
        }

    </script>
</body>
    <table border="1">
        <tbody>
        </tbody>
    </table>
</html>