프로그래밍/PHP

[PHP 수업] 15강 - PHP와 AJAX

월횽 2024. 8. 14. 06:30
728x90
반응형
SMALL

 

이번 강의에서는 AJAX(Asynchronous JavaScript and XML)를 활용하여 PHP와 JavaScript 간의 비동기 데이터 통신을 구현하는 방법을 다룹니다. AJAX를 통해 동적인 웹 페이지를 만들 수 있으며, 사용자와의 상호작용을 원활하게 할 수 있습니다.

 

 

1. AJAX 개념 및 소개

 

1-1. AJAX란?

· AJAX는 웹 페이지가 전체를 새로 고침하지 않고도 서버와 데이터를 비동기적으로 교환할 수 있게 하는 기술입니다.
· AJAX는 Asynchronous JavaScript and XML의 약자로, 주로 JavaScript와 XMLHttpRequest 객체를 사용하여 서버와 비동기 통신을 수행합니다.

728x90

1-2. AJAX의 장점

· 페이지의 일부분만 업데이트 가능하여 사용자 경험을 개선합니다.
· 서버와 클라이언트 간의 통신이 비동기적으로 이루어져 페이지 로딩 속도가 빨라집니다.
· 전체 페이지를 새로 고치지 않아도 되어 데이터 전송과 처리 속도가 향상됩니다.

 

 

2. PHP와 JavaScript 연동

AJAX를 사용하여 PHP와 JavaScript 간의 연동을 통해 데이터를 주고받을 수 있습니다.

 

2-1. PHP에서 데이터 반환

PHP 파일을 통해 클라이언트에게 데이터를 반환할 수 있습니다.

data.php (PHP 파일)

<?php
header('Content-Type: application/json');

// 데이터 배열을 정의합니다.
$data = array(
    'status' => 'success',
    'message' => '데이터를 성공적으로 가져왔습니다.',
    'data' => array(
        'name' => 'John Doe',
        'email' => 'john.doe@example.com'
    )
);

// JSON 형식으로 데이터를 반환합니다.
echo json_encode($data);
?>

 

 

 

3. 비동기 데이터 통신 (XMLHttpRequest, Fetch API)

 

3-1. XMLHttpRequest

XMLHttpRequest는 AJAX의 전통적인 방식으로, 서버와 비동기적으로 통신할 수 있게 해줍니다.

클라이언트 측 JavaScript

<!DOCTYPE html>
<html>
<head>
    <title>AJAX with XMLHttpRequest</title>
    <script>
        function loadData() {
            var xhr = new XMLHttpRequest();
            xhr.open('GET', 'data.php', true);
            xhr.onload = function () {
                if (xhr.status >= 200 && xhr.status < 300) {
                    var response = JSON.parse(xhr.responseText);
                    document.getElementById('result').innerHTML =
                        'Name: ' + response.data.name + '<br>Email: ' + response.data.email;
                }
            };
            xhr.send();
        }
    </script>
</head>
<body>
    <button onclick="loadData()">Load Data</button>
    <div id="result"></div>
</body>
</html>
반응형

3-2. Fetch API

Fetch API는 더 현대적이고 사용하기 쉬운 비동기 데이터 통신 방법입니다.

클라이언트 측 JavaScript

<!DOCTYPE html>
<html>
<head>
    <title>AJAX with Fetch API</title>
    <script>
        async function loadData() {
            try {
                let response = await fetch('data.php');
                let data = await response.json();
                document.getElementById('result').innerHTML =
                    'Name: ' + data.data.name + '<br>Email: ' + data.data.email;
            } catch (error) {
                console.error('Error:', error);
            }
        }
    </script>
</head>
<body>
    <button onclick="loadData()">Load Data</button>
    <div id="result"></div>
</body>
</html>

 

 

 

4. AJAX를 활용한 동적인 웹 페이지 구현

AJAX를 활용하면 페이지를 동적으로 업데이트할 수 있습니다. 예를 들어, 사용자가 버튼을 클릭했을 때 서버에서 데이터를 가져와 페이지의 특정 부분을 업데이트하는 방식입니다.

 

4-1. 동적인 페이지 업데이트 예제

index.html (클라이언트 측 HTML)

<!DOCTYPE html>
<html>
<head>
    <title>Dynamic Page with AJAX</title>
    <script>
        function fetchData() {
            fetch('data.php')
                .then(response => response.json())
                .then(data => {
                    document.getElementById('name').innerText = data.data.name;
                    document.getElementById('email').innerText = data.data.email;
                })
                .catch(error => console.error('Error:', error));
        }
    </script>
</head>
<body>
    <h1>AJAX Dynamic Page</h1>
    <button onclick="fetchData()">Fetch User Data</button>
    <div>
        <p>Name: <span id="name"></span></p>
        <p>Email: <span id="email"></span></p>
    </div>
</body>
</html>

 

SMALL

data.php (서버 측 PHP)

<?php
header('Content-Type: application/json');

$data = array(
    'status' => 'success',
    'data' => array(
        'name' => 'Jane Doe',
        'email' => 'jane.doe@example.com'
    )
);

echo json_encode($data);
?>

 

 

 

- 이전 수업 목록

 

 

 

 

 

 

 

 

 

 

 

 

 

728x90
반응형
LIST