onreadystatechange ์ด๋ฒคํธ
XMLHttpRequest๊ฐ์ฒด๋ ์ํ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ์๋๋ฐ readyState ์์ฑ์ด ๊ทธ ๊ฐ์ ๊ฐ์ง๊ณ ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฐ๋ฆฌ๋ ์ด ์ํ ์ ๋ณด๋ฅผ ๋ณด๊ณ ์๋ต์ด ์๋์ง, ๊ทธ ์๋ต์ด ์ ์์ ์ผ๋ก ์๋์ง ํ์ธํ ์๊ฐ ์์ต๋๋ค.
์ด readyState ๊ฐ ๋ณํ ๋๋ง๋ค ํญ์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๊ฐ ์๋๋ฐ ๊ทธ๊ฒ์ด ๋ฐ๋ก onreadystatechange ์ด๋ฒคํธ์ ๋๋ค.
XMLHttpRequest ๊ฐ์ฒด์ ์ค์ํ ์ธ ๊ฐ์ง ์์ฑ์ ์๋์ ๊ฐ์ต๋๋ค.
์์ฑ | ์ค๋ช |
---|---|
onreadystatechange | readyState ์์ฑ๊ฐ์ด ๋ณํ ๋๋ง๋ค ์๋์ผ๋ก ํธ์ถ๋ ํจ์ ๋๋ ํจ์๋ช ์ ์ ์ฅํฉ๋๋ค. |
readyState | XMLHttpRequest ๊ฐ์ฒด์ ์ํ๋ฅผ ๊ฐ์ง๊ณ ์๊ณ , 0 ์์ 4 ์ ๊ฐ์ ๊ฐ์ง๋๋ค. 0: ์์ฒญ์ด ์ด๊ธฐํ๋์ง ์์์ต๋๋ค. 1: ์๋ฒ์ ์ฐ๊ฒฐ๋์์ต๋๋ค. 2: ์์ฒญ์ด ๋ฐ์๋ค์ฌ์ก์ต๋๋ค. 3: ์์ฒญ์ด ์งํ์ค์ ๋๋ค. 4: ์์ฒญ์ด ์๋ฃ๋๊ณ ์๋ต์ ๋ฐ์์ต๋๋ค. |
status | 200: ์ ์ 404: ํ์ด์ง๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. |
onreadystatechange ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๊ณ readyState๊ฐ 4์ด๋ฉฐ status๊ฐ 200์ด๋ฉด ์ ์์ ์ผ๋ก ์์ฒญ์ด ์ฒ๋ฆฌ๋์ด ์๋ต์ด ์จ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์ด๋ ์ํ๋ ์์ ์ ํ์๋ฉด ๋ฉ๋๋ค.
์์
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
document.getElementById("demo").innerHTML = xhttp.responseText;
}
};
Note: onreadystatechange ์ด๋ฒคํธ๋ ํ๋ฒ์ ์์ฒญ์ ํ ๋ ์ด 5๋ฒ ๋ฐ์ํฉ๋๋ค (readyState๊ฐ 0์์ 4๊น์ง ๋ฐ๋๋ฏ๋ก).
Callback ํจ์ ์ฌ์ฉํ๊ธฐ
callback ํจ์๋ ๋ค๋ฅธ ํจ์์ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ์ง๋ ํจ์๋ฅผ ๋งํฉ๋๋ค.
๋ง์ฝ ์น์ฌ์ดํธ์ ํ๋ ์ด์์ AJAX ์์ ์ด ์๋ค๋ฉด, ๋จ ํ๋์ ํ์ค ํจ์๋ฅผ ๋ง๋ค์ด์ XMLHttpRequest ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ ๊ฐ๊ฐ์ AJAX ์์ ์ด ์์ ๋๋ง๋ค ์ด ํ์คํจ์์์ ํธ์ถํจ์ผ๋ก์จ ์ฝ๋๋ฅผ ๋จ์ํ ํ ์ ์์ต๋๋ค.
ํ์คํจ์๋ ๊ฐ๊ฐ์ AJAX์์ ์ ํ๋ ํจ์๋ฅผ ํ๋ผ๋ฏธํฐ๋ก ๋๊ฒจ๋ฐ์์ ์ด๋ฅผ ์ฒ๋ฆฌํ๊ฒ ๋ฉ๋๋ค.
์์
function loadDoc(cFunc) {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (xhttp.readyState == 4 && xhttp.status == 200) {
cFunc(xhttp);
}
'๐ป Programming > ์นํ๋ก๊ทธ๋๋ฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[jQuery] 3. Selectors ( ์ ๋ ํฐ ) (0) | 2016.06.12 |
---|---|
AJAX๋? - ๋ฐ์ดํฐ๋ฒ ์ด์ค (0) | 2016.06.12 |
AJAX๋? - ์๋ฒ๋ก๋ถํฐ ์๋ต๋ฐ๊ธฐ (0) | 2016.06.12 |
AJAX๋? - ์๋ฒ๋ก ์์ฒญํ๊ธฐ (1) | 2016.06.12 |
Ajax ๋? - Ajax ์์ํ๊ธฐ (1) | 2016.06.12 |