thumbnail
비동기 톡신을 μœ„ν•œ AJAX, XML, JSON 2탄
Front-End
2023.07.19.

⭐️ μ—­λŒ€κΈ‰ κ³ λ‚œκ³Ό μ—­κ²½μ˜ λ‚ 2

img_3.png

xhr.readyState

xhr.readyState μ„€λͺ…
0 open() λ©”μ„œλ“œ 호좜 μ „
1 send() λ©”μ„œλ“œ 호좜 μ „
2 send() λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν–ˆμœΌλ‚˜ 아직 μ„œλ²„μ˜ 응닡을 받지 λͺ»ν•œ μƒνƒœ
3 send() λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν–ˆκ³  μ„œλ²„μ˜ 응닡을 일뢀 받은 μƒνƒœ
4 send() λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν–ˆκ³  μ„œλ²„μ˜ 응닡이 μ™„λ£Œλœ μƒνƒœ

β†’ μ„œλ²„κ°€ 응닡을 μš”μ²­ν•  λ•Œ StatusCodeλ₯Ό μ²¨λΆ€ν•©λ‹ˆλ‹€.

xhr.status

StatusCode μ„€λͺ…
1xx 처리 쀑, μœ μ§€ 쀑
100 continue
2xx 성곡
200 ok
3xx λ¦¬λ‹€μ΄λ ‰νŠΈ
302 redirect
4xx ν΄λΌμ΄μ–ΈνŠΈ 였λ₯˜
404 not found
5xx μ„œλ²„ 였λ₯˜
500 internal server error

ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„μ— 뢙은것이 μ„±κ³΅ν•œ μ½”λ“œ : xhr.readyState: 4 And xhr.status: 200

β‡’ event: readystatechange

ajax μ˜ˆμ‹œ

var xhr = new XMLHttpRequest();
xhr.addEventListener('readystatechange', ajaxHandler);

function ajaxHandler() {
    if (xhr.readyState === 4 && xhr.status === 200) {
        var personsChild = parsePersonsJSON(xhr.responseText);
        var persons = document.querySelector('#persons');
        persons.innerHTML = '';

        for (var i in personsChild) {
            persons.appendChild(personsChild[i]);
        }
    }
}

function parsePersonsJSON(jsonStr) {
    var persons = JSON.parse(jsonStr);

    for (var i in persons) {
        var content = '<h4>이름: ' + persons[i].name + '</h4>';
        content += '<h4>성별: ' + persons[i].gender + '</h4>';
        content += '<h4>λ‚˜μ΄: ' + persons[i].age + '</h4>';
        content += '<h4>λΆ„μ•Ό: ' + persons[i].field + '</h4>';

        var div = document.createElement('div');
        div.setAttribute('class', 'person');
        div.innerHTML = content;

        persons[i] = div;
    }

    return persons;
}

function sendHandler() {
    xhr.open('GET', 'persons.json', true);
    xhr.send();
}

function clearHandler() {
    document.querySelector('#persons').innerHTML = '';
}

function init() {
    document.querySelector('#send').addEventListener('click', sendHandler);
    document.querySelector('#clear').addEventListener('click', clearHandler);
}

window.addEventListener('load', init);
Thank You for Visiting My Blog, Have a Good Day πŸ˜†
Β© 2023 Developer JaeHyeon, Powered By Gatsby.