ํฐ์คํ ๋ฆฌ ๋ทฐ
๐ AJAX
AJAX : ๋ธ๋ผ์ฐ์ ์์ ํ์ด์ง๋ฅผ ์ด๋ํ์ง ์๊ณ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํตํด HTTP Request๋ฅผ ๋ณด๋ด๊ณ ๋ฐ์ JS์์ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
์ฌ์ฉ์์๊ฒ ๋ ๋์ ์ฌ์ฉ ๊ฒฝํ ์ ๊ณตํ ์ ์์ผ๋ฉฐ ๋๋ถ๋ถ์ ์น์ฌ์ดํธ์์ ์ฌ์ฉ๋๊ณ ์๋ ๊ธฐ์ ์
๋๋ค.
๐ AJAX ์ค์ต
- AJAX๋ฅผ ์ํ ๊ฐ์ฒด ์์ฑ
var req = new XMLHttpRequest(); // HTTP ์์ฒญ์ ๋ง๋ค ์ ์๋ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ ๋ช ๋ น
- ์์ฒญ์ ๋ฐฉ์๊ณผ URL ์ค์
req.open("GET", "./data.txt"); // http request method์ URL ์ค์
- ์์ฒญ ์ ์ก์๊น์ง ์์ฑ ๋ฐ ์ ์ฅํ๋ฉด console์ฐฝ์ ์๋ฌ๊ฐ ๋จ๋๋ฐ ์ด๋ ์น ์๋ฒ๋ฅผ ๊ตฌ๋ํ๋ ๊ฒ์ด ์๋ ์ง์ html์์ data.txtํ์ผ์ ์ฝ์ด์ค๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์
๋๋ค. ํด๊ฒฐ๋ฐฉ๋ฒ์ผ๋ก๋ ๋ธ๋ผ์ฐ์ ์์ฑ > ๋ฐ๋ก๊ฐ๊ธฐ > ๋์์ ๋งจ ๋์ --disable-web-security ๋ฅผ ์ถ๊ฐํ์ฌ ๋ณด์ ์ต์
์ ๋นํ์ฑํ ํ๋ฉด ๋ฉ๋๋ค.
req.send();
๋ค์ ๋์์์ ๊ฐ๋ฐ์ ๋๊ตฌ > networkํญ์ ๋ณด๋ฉด html๊ณผ data.txtํ์ผ ์๋ต์ ๋ฐ์ ๊ฒ์ ๋ณผ ์ ์์ต๋๋ค.
๋ํ console์์ req.response๋ฅผ ์
๋ ฅํ๋ฉด ํ
์คํธ๊ฐ ์ ์ฅ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
๋น๋๊ธฐ ๋ฐฉ์์ผ๋ก ์์ฒญํ๊ธฐ ๋๋ฌธ์ send ๋ฉ์๋ ํธ์ถ ํ ๋ฐ๋ก ์ฝ๋์์ ์ ๊ทผํ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋น์ด ์์ต๋๋ค.
AJAX์ ์งํ์ ๋ฐ๋ผ ํธ์ถ๋๋ callbackํจ์๋ฅผ ํ์ฉํด์ผ ํฉ๋๋ค.
readyState ์์ฑ
AJAX ์์ฒญ์ ๋ฐ๋ผ 0~4๊น์ง ๋ณํํฉ๋๋ค.
readyState ์๋ฏธ
- 0 : open ๋ฉ์๋ ํธ์ถ ์
- 1 : open ๋ฉ์๋ ํธ์ถ ํ, send ๋ฉ์๋ ํธ์ถ ์
- 2 : ๋ณด๋ธ ์์ฒญ์ ๋ํด ์๋ต ํค๋๊ฐ ์์ ๋ ํ
- 3 : ์๋ต์ ๋ฐ๋ ๋ถ๋ถ์ด ์์ ์ค์ผ ๋
- 4 : ๋ชจ๋ ์๋ต์ด ์์ ๋์์ ๋
onreadystatechange ์์ฑ
readyState๊ฐ ๋ณํ ๋๋ง๋ค ํธ์ถ๋๋ ์ฝ๋ฐฑ ํจ์์ ๋๋ค.
status ์์ฑ
HTTP response์ ์๋ต ํค๋์ ๊ธฐ๋ก๋ ์ฝ๋
Response Code ์๋ฏธ
- 200 : OK
- 404 : Not Found
- 500 : Internal Error
์๋ต์ ์ ์์ ์ผ๋ก ์์ ํ ๊ฒฝ์ฐ
readyState : 4
status : 200
๊ธฐํ callback function ํ์ฉ ๊ฐ๋ฅํ ์์ฑ
- onloadstart
- onprogress
- onabort
- onerror
- onload
- ontimeout
- onloadend
๐ JSON (Javascript Object Notification)
JSON : ์๋ฐ์คํฌ๋ฆฝํธ์ ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ํํํ๋ ๋ฐฉ๋ฒ์
๋๋ค.
ํ๋ก๊ทธ๋จ๊ฐ์ ์ ๋ฌํ๊ธฐ ํธ๋ฆฌํฉ๋๋ค.
์๋ฒ์์๋ ๋ฐ์ดํฐ๋ฅผ jsonํํ๋ก ์ ์กํ๊ณ ์ด๋ฅผ ์์ ํ ๋ธ๋ผ์ฐ์ ๋ js๋ฅผ ํตํด ์ด๋ฅผ ํ์ฑํ๊ณ ๋ฌธ์์ ๋ฐ์ํ๊ฒ ๋ฉ๋๋ค.
๐ค JSON API
- JSON.stringify( object ) : ์ธ์๋ก ๋ฐ์ ๊ฐ์ฒด๋ฅผ JSON ๋ฌธ์์ด๋ก ๋ฐํ
- JSON.parse( sring ) : ์ธ์๋ก ๋ฐ์ ๋ฌธ์์ด์ Javascript Object๋ก ๋ณ๊ฒฝํด ๋ฐํ
var original_obj = { pi:3.14, str:"string" }; var json_str = JSON.stringify( original_obj ); // ๋ฐํ ๋ฌธ์์ด{"pi":3.14,"str":"string"} var parsed_obj = JSON.parse( json_str ); console.log( original_obj ); // {pi: 3.14, str: "string"} console.log( parsed_obj ); // {pi: 3.14, str: "string"}
- json์ js ๊ฐ์ฒด์ ๋ด๊ธด ๋ฐ์ดํฐ๋ง ๋ฌธ์์ด๋ก ๋ฐํํ๊ณ ๋ค์ ๊ฐ์ฒด๋ก ๋ณํํ๊ธฐ ๋๋ฌธ์ undefined, function ์ ๋ณํ๋์ง ์์์ ์ฃผ์ํ์ธ์!
๐ AJAX + JSON
- AJAX๋ฅผ ํตํด JSON ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ต๋๋ค.
var req = new XMLHttpRequest(); req.onreadystatechange = function(){ if( this.readyState == 4 ){ // ... } } req.open("GET", JSON_DATA_URL); req.send();
- JSON.parse API๋ฅผ ์ด์ฉํด ๋ฐ์์จ JSON ๋ฌธ์์ด ๋ฐ์ดํฐ๋ฅผ Javascript ๊ฐ์ฒด๋ก ๋ณํํฉ๋๋ค.
req.onreadystatechange = function(){ if( this.readyState == 4 ){ data = JSON.parse(this.response); //... } }
- ๋ฐ์ดํฐ๋ฅผ ์ฒ๋ฆฌํ๋ Javascript ํ๋ก๊ทธ๋จ์ ์คํํฉ๋๋ค. (HTML ๋ฌธ์์ ๋ฐ์)
๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ (๋ฐฐ์ด ํํ๋ก ๊ฐ์ ๋ฐ์ ๊ฒฝ์ฐ) ๋ฐ๋ณต๋ฌธ์ผ๋ก ๊ฐ๊ฐ์ ๋ฐ์ดํฐ์ ๋ํด ์ฒ๋ฆฌํฉ๋๋ค.for( var i = 0 ; i < data.length ; i++ ){ document.write(data[i].id, data[i].msg); }
'JS > Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์์ธ์ฒ๋ฆฌ โ (0) | 2022.10.04 |
---|---|
Callback Function / EventHandler (0) | 2022.09.22 |
DOM (Document Object Model) โก (0) | 2022.09.21 |