본문 바로가기
✨ Front-end/jQuery

[jQuery] RestApi 사용해서 Ajax 데이터 뽑아내기

by 환풍 2023. 9. 13.
728x90

 

 

DB데이터에 저장된 데이터 뽑기

컨트롤러

DB에 저장된 데이터들을 조회하여 컨트롤러에서 List에 담긴 데이터들을 Ajax로 return 시키는 것이다.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core_rt" %>       
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/css/bootstrap.min.css">
  <script src="https://cdn.jsdelivr.net/npm/jquery@3.6.1/dist/jquery.slim.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/popper.js@1.16.1/dist/umd/popper.min.js"></script>
  <script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
<script src="https://code.jquery.com/jquery-3.6.0.js"></script>
<script src="https://code.jquery.com/ui/1.13.2/jquery-ui.js"></script>
<script type="text/javascript">
 
   function ajaxProcess(url,type,dataType,data){
        $.ajax({
            url:url,
            type:type,
            dataType:dataType,            
            success:function(v){
                //console.log(v);
                $("#hr td").remove();
                $("#tb tr").remove();
                $("#tb td").remove();
                $(v).each(function(index, x){//외부 
                    //console.log(x);    
                  $("#tb").append("<tr>");
                
                    $("#hr td").remove();
                    $(Object.keys(x)).each(function(index,xx){//내부 
                        console.log(xx+' '+index);
                        $("#hr").append("<td>"+xx+"</td>");
                        $("#tb").append("<td>"+x[xx]+"</td>");
                    });
                    $("#tb").append("</tr>");                    
                });
            },
            error:function(error){
                alert('error');
            }            
        });
   }
   $(function(){
       $(".container").hide();
       $("button").eq(0).click(function(){
           $(".container").show();
           ajaxProcess('${pageContext.request.contextPath}/empSelect','POST','json');
       });     
       $("button").eq(1).click(function(){
           $(".container").show();
           ajaxProcess('${pageContext.request.contextPath}/studentSelect','POST','json');
       });    
   });
</script>
</head>
<body>
<button>EMP</button>
<button>STUDENT</button>
<div class="container">
  <h2>Table Search</h2>              
  <table class="table">
    <thead>
      <tr id="hr">        
      </tr>
    </thead>
     <tbody id="tb">
        
     </tbody>      
  </table>
</div>
</body>
</html>
cs
$(v).each(function(index, x) { ... });:

이 부분은 서버에서 받은 데이터(v)를 순회하면서 각 항목을 처리한다. $(v)는 받은 데이터를 jQuery 객체로 변환한다.
.each() 함수를 사용하여 데이터를 순회하며 각 객체(x)에 대한 처리를 수행한다.

 

 

*아래에서 자세히 예제들어 설명

내부 순회($(Object.keys(x)).each(function(index, xx) { ... })):

각 객체(x)의 속성을 순회하면서 테이블의 헤더(<th>)와 데이터(<td>)를 생성한다.
Object.keys(x)를 사용하여 객체의 키(속성 이름)를 가져오고, .each() 함수를 사용하여 키를 순회한다.
각 키에 대한 값(x[xx])을 사용하여 데이터 셀(<td>)을 생성하고, 데이터를 테이블에 추가한다.

 

결과화면을 보면, STUDENT 버튼을 클릭하면 Table이 Ajax로 그려지며, 콘솔창을 보면 데이터들도 나열된걸 볼 수 있다.


 

 

$(Object.keys()).each(function() { ... }) 
- jQuery를 사용하여 JavaScript 객체(Object)의 속성(프로퍼티)을 순회하고 각 속성에 대한 작업을 수행하는 방법
Object.keys(obj):

Object.keys() 메서드는 주어진 객체(obj)의 열거 가능한 속성(프로퍼티)들을 배열로 반환한다.
이 배열에는 객체의 속성 이름(키)들이 들어 있습니다.

 

$(Object.keys(obj)).each(function() { ... }):

$(...)은 jQuery 객체를 생성하는 함수로, 주어진 배열을 jQuery 객체로 변환한다.
.each() 함수는 jQuery 객체에 대해 반복 작업을 수행한다. .each() 함수의 인자로는 반복할 함수(콜백 함수)가 전달된다.

 

콜백 함수(function() { ... }):

.each() 함수 내부에서 실행되는 함수로, 배열의 각 요소(객체의 속성 이름)에 대한 작업을 정의한다.
콜백 함수는 두 개의 매개변수를 받는다.

첫 번째 매개변수는 인덱스(index)이며, 두 번째 매개변수는 배열 요소(객체의 속성 이름) 자체이다.
콜백 함수 내부에서는 배열의 각 요소(속성 이름)에 대한 작업을 수행할 수 있다.

 

Ex)

위 코드에서 Object.keys(obj)는 객체 obj의 속성 이름을 배열로 반환하고, .each() 함수를 사용하여 배열을 순회하면서 각 속성 이름과 해당 값을 출력한다. 결과는 오른쪽과 같다.

반응형

댓글