Web Front-end/javaScript
Ajax통신을 활용한 json 데이터 불러오기(get 방식)
develop_study
2021. 12. 9. 17:48
반응형
ajax를 이용하여 json데이터를 불러오는 방법을 알아보도록 하겠습니다.
그림과 같이 버튼을 누르면 json데이터를 불러옵니다.
짱쉬움
xmlHttpRequest, axios , fetch 등 다양한 방법이 있지만
본 게시글에서는 ajax를 쓰기위해 제이쿼리를 사용하도록 하겠습니다.
<HTML>
제이쿼리를 써야하므로 html 헤드 영역에 아래와 같은 소스를 삽입하겠습니다.
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<title>Document</title>
</head>
본문 내용은 다음과 같이 작성해보겠습니다.
<body>
<table>
<thead>
<tr>
<td>순번</td>
<td>이름</td>
<td>전화번호</td>
<td>주소</td>
<td>상태</td>
<td>비고</td>
<td>날짜</td>
</tr>
</thead>
<tbody class="table_body">
</tbody>
<button type="button" onclick="getJSON()"> json 불러오는 버튼</button>
</table>
</body>
별다른건 없고 테이블 내용에 table_body라고 class명을 주었습니다.
버튼을 클릭하면 getJSON()이라는 자바스크립트 함수가 실행됩니다.
<JavaScript>
<script>
function getJSON() {
$.ajax({
type:"get",
url:"data.json",
dataType:"json",
success: function(data){
console.log("통신성공");
console.log(data);
str = '<TR>';
$.each(data , function(i){
str += '<TD>' + data[i].no + '</TD>
<TD>' + data[i].name + '</TD>
<TD>' + data[i].tel + '</TD>
<TD>' + data[i].addr + '</TD>' +
'<TD>' + data[i].status + '</TD>
<TD>' + data[i].comment + '</TD>
<TD>'+ data[i].date + '</TD>';
str += '</TR>';
});
$('.table_body').append(str);
},
error:function(){
console.log("통신에러");
}
})
}
</script>
별다른건 없고 제이쿼리의
$.each() 반복문을 이용하여 받아온 data값을 배열형태로 받아와서
각 key값에 해당하는 value값을 뿌려주는 형태입니다.
클래스명 table_body에
선택한 요소의 아래에 내용을 추가하는 명령어인 .append()로 뿌려줍니다.
난잡해보이지만 기본형은 아래 코드와 같습니다.
$.ajax({ //jquery ajax
type:"get", //get방식으로 가져오기
url:"data.json", //값을 가져올 경로
dataType:"json", //html, xml, text, script, json, jsonp 등 다양하게 쓸 수 있음
success: function(data){ //요청 성공시 실행될 메서드
console.log("통신성공");
},
error:function(){ //요청 실패시 에러 확인을 위함
console.log("통신에러");
}
})
<data.json>
json은 기본적으로 {key : value} 형식을 갖습니다.
쌍따옴표"" 안에 값이 들어가야합니다.
[{
"no":1,
"name":"한국인",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":2,
"name":"중국인",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":3,
"name":"미국인",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":4,
"name":"일본인",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":5,
"name":"아이유",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":6,
"name":"BTS",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":7,
"name":"블랙핑크",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":8,
"name":"여자친구",
"tel":"123-4567",
"addr":"서울특별시",
"status":"좋음",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":9,
"name":"에스파",
"tel":"123-9876",
"addr":"부산광역시",
"status":"보통",
"comment":"특이사항 없음",
"date":"12월 9일"
},
{
"no":10,
"name":"오마이걸",
"tel":"123-7894",
"addr":"대전시",
"status":"보통",
"comment":"특이사항 없음",
"date":"12월 9일"
}
]
반응형