반응형
말랑Cow
IT
말랑Cow
전체 방문자
오늘
어제
  • 분류 전체보기 (165)
    • Linux (33)
    • Windows (6)
    • Network (7)
    • Hardware (10)
    • Zabbix (13)
    • python (9)
    • script (0)
    • docker (16)
    • NAS (1)
    • DB (3)
    • php (33)
    • jQuery (1)
    • 정보보안기사 (0)
    • Ajax (1)
    • Javascript (21)
    • DELL (0)
    • HPE (0)
    • Secui (0)
    • AWS (2)
    • Elastic (0)
    • 보안 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • CentOS
  • ZABBIX
  • jQuery
  • 파이썬
  • Python
  • docker
  • 리눅스
  • JavaScript
  • php 클래스
  • php 객체
  • 자빅스
  • 자바스크립트
  • 모니터링
  • php
  • Shell
  • 도커
  • Linux
  • 서버
  • 네트워크
  • bash
hELLO · Designed By 정상우.
말랑Cow

IT

php + Ajax 기본(1)
Ajax

php + Ajax 기본(1)

2021. 9. 1. 00:00
반응형
# index.html의 body 영역

<body>
    <p>내 이름은 <span id="name"></span> 입니다.</p>
    <script src="//code.jquery.com/jquery.min.js"></script>
    <script>
        $.ajax({
            url: "test.php",
            type: "get",
        }).done(function(data){
            $('#name').text(data);
        });
    </script>
</body>
# test.php

<?php
echo "SJH";
?>

 

위 index.html에서 사용된 ajax 내용을 자세히 보겠습니다.

 

$.ajax() 데이터를 서버에 POST, GET 방식으로 전송이 가능하며, HTML, XML JSON, 텍스트 유형에 데이터를 요청할 수 있는 통합적인 메서드
$.ajax().done() HTTP 요청이 성공하면 요청한 데이터가 done() 메소드로 전달됨
$('#name').text(data) name이라는 id를 가진 요소를 data라는 인자값으로 하여 문자열로 출력
(html 태그는 전부 제외됨)

 

다른 예시로 조금 더 자세히 이해해보도록 하겠습니다.

 

# index.html 의 body 영역

<body>
    <input type="number" id="a">
    <input type="number" id="b">
    <button onclick="add()">더하기</button>
    <p id="result"></p>

    <script src="//code.jquery.com/jquery.min.js"></script>
    <script>
        function add(){
            $.ajax({
                url: "calc.php",
                type: "get",
                data: {
                    a: $('#a').val(),
                    b: $('#b').val(),
                }
            }).done(function(data){
                $('#result').text(data);
            })
        }
    </script>
</body>
# calc.php

<?php

$a = $_GET['a'];
$b = $_GET['b'];

$result = $a + $b;
echo "$result";

?>

첫 칸이 a라는 id의 값, 두 번째 칸이 b라는 id의 값이 됩니다.

더하기 라는 버튼을 클릭하면 add() 함수가 실행됩니다.

add() 함수는 다음과 같이 동작합니다.

a 데이터는 a 라는 id를 가진 form의 값을 가져옵니다.

b 데이터는 b 라는 id를 가진 form의 값을 가져옵니다.

즉, 입력한 값을 가져오게 되며 a, b의 값을 GET 방식으로 calc.php 로 전달합니다.

calc.php의 코드는 GET방식으로 전달받은 a와 b의 데이터를 변수 $a, $b에 담습니다.

그러고 둘이 더한 후 그 값을 echo로 출력합니다.

이 echo로 출력된 결과물이 .done 뒤에 오는 function 함수의 인자값이 됩니다.

즉, data 가 echo로 출력된 결과물이 됩니다.

이 결과물을 result라는 id를 가진 영역에 문자열로 출력합니다.

 

 

network 의 결과를 보면 calc.php에 a와 b의 값이 GET방식으로 전송되는 것을 볼 수 있습니다.

 

# index.html 의 body 부분

<body>
    <div class="board">
        <p id="result">EPL</p>
        <button onclick="next()" class="block-button">다음</button>
    </div>
    
    <script src="//code.jquery.com/jquery.min.js"></script>

    <script>
        var index=0;
        function next(){
            $.ajax({
                url: "test.php",
                type: "get",
                data: {index: index++}
            }).done(function(data){
                data = JSON.parse(data);
                $('#result').text('좋아하는 ' + data.b + '은' +  data.c + ' 입니다.');
                if(index > 1) index = 0;
            });
        }
    </script>
</body>
<?php

$a = $_GET['index'];

$b = ['Team', 'Player'];

$c = ['Tottenham', 'Son'];

$json = json_encode(array('b' => $b[$a], 'c' => $c[$a]));

echo($json);

?>

 

다음 이라는 버튼을 클릭할 때 마다 next() 라는 함수가 실행됩니다.

next() 함수는 다음의 기능을 합니다.

클릭 시 index값이 0인 상태로 test.php 에 GET방식으로 전달되고 test.php의 결과물을 done 이후의 함수로 넘깁니다.

여기선 data 라는 파라미터에 그 결과물이 들어가게 됩니다.

data를 json 형식으로 만들고 result라는 id를 가진 영역에 text() 괄호안에 있는 애들을 출력합니다.

b는 [team, player] 가 들어있는 데이터고 c는 [Tottenham, Son] 이 들어있는 데이터입니다.

 

처음 클릭 시 GET으로 index값이 0이 전달되었으므로 배열데이터의 0번째 값인 Team 과 Tottenham이 결과물로 나와 done의 function의 data 인자값으로 들어가며 json 형식으로 변환시켜 data.b 는 json 형태의 Team 이 되고 data.c는 json 형태의 Tottenham 이 됩니다. 

반응형
    말랑Cow
    말랑Cow

    티스토리툴바