[Javascript] Ajax

Ajax

웹브라우저는 대단히 정적인 시스템이었다. 내용이 바뀌면 페이지 새로고침을 해서 내용을 새롭게 변경해야 했다. 이것은 웹이 전자 문서를 염두에 두고 고안된 시스템이기 때문에 당연하게 생각되었다.

Ajax는 웹 브라우저와 웹 서버가 내부적으로 데이터 통신을 하게 된다. 그리고 변경된 결과를 웹 페이지에 프로그래밍적으로 반영함으로써 웹 페이지의 로딩 없이 서비스를 사용할 수 있게 한다.

 

Ajax는 Ansynchronous Javascript and XML의 약자다. 한국어로는 비동기적 자바스크립트와 XML로 직역이 된다. 자바스크립트를 이용해서 비동기적으로 서버와 브라우저가 데이터를 주고받는 방식을 의미한다. 이때 사용하는 API가 XMLHTTPRequest이다. 그렇다고 꼭 XML을 사용해서 통신해야 하는 것은 아니다. XML보다는 Json을 더 많이 사용한다.

 

<?php
$d1 = new DateTime;
$d1->setTimeZone(new DateTimezone('asia/seoul'));
echo $d1 -> format('H:i:s');
?>

GET 방식

<body>
    <p> time: <span id="time"></span></p>
    <input type="button" id="execute" value="execute"/>
    <script>
        document.querySelector('input').addEventListener('click', (event)=>{
            let xhr = new XMLHttpRequest();
            xhr.open('GET','./time.php'); // POST도 가능
            xhr.onreadystatechange = ()=>{
                if(xhr.readyState === 4 && xhr.status === 200){ // 4 = 모든 통신이 끝남 , 200 = 성공 (404 not found 요청한 리소스 존재하지 않음 )
                    document.querySelector('#time').innerHTML = xhr.responseText; 
                }
            }
            xhr.send();
        })
    </script>

 

POST 방식

<body>
    <p> time: <span id="time"></span></p>
    <input type="button" id="execute" value="execute"/>
    <script>
        document.querySelector('input').addEventListener('click', (event)=>{
            let xhr = new XMLHttpRequest();
            xhr.open('POST','./time.php');
            xhr.onreadystatechange = () => {
                document.querySelector('#time').innerHTML = xhr.responseText;
            }

            xhr.setRequestHeader('Content-Type', 'application/x-www-form-unlencoded');// POST 방식에 맞는 형태로 변환해줌
        
        }
    </script>
</body>

 

'개발' 카테고리의 다른 글

[Javascript] document.Selection 과 Range 정리  (0) 2021.08.16
[Javascript] this에 대해서  (0) 2021.08.16
[Javascript] 이벤트 - 2  (0) 2020.12.31
[Javascript] 이벤트  (0) 2020.12.30
[Javascript] 문서의 기하학적 특성  (0) 2020.12.23
<