[Js] JSON | Ajax์ JSON
- -
๋ชจ๋ ํฌ์คํ ์ ์ธํ๋ฐ [์ํ์ฝ๋ฉ] ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์์ ๋ด์ฉ์ ๋ด๊ณ ์์ผ๋ฉฐ
์ถ์ฒ๋ ์๋์ ์ฃผ์๋ก "egoing Lee"๋์ ์๋ฃ์ ๋๋ค.
์์ ์ ์ธ ์๋๊ฐ ์๋ ๊ณต๋ถํ ๊ฒ์ ์ ๋ฆฌํด๋๋ ๋ชฉ์ ์ผ๋ก ํฌ์คํ ํ ๊ฒ์ ๋๋ค.
JSON์ด๋?
JSON(JavaScript Object Notation)์ ์ฝ์๋ก JavaScript์์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋ ์ฌ์ฉํ๋ ํํ์์ ์๋ฏธํ๋ค.
์ด ํํ์์ ์ฌ๋๋ ์ดํดํ๊ธฐ ์ฝ๊ณ ๊ธฐ๊ณ๋ ์ดํดํ๊ธฐ ์ฌ์ฐ๋ฉด์ ๋ฐ์ดํฐ์ ์ฉ๋์ด ์๋ค.
๊ฐ์ฒด๋ฅผ ๋ง๋ค ๋๋ { }์์๋ค๊ฐ ๊ฐ์ ๋ฃ์ด์ผ ๋๋ฉฐ, ํ๋์ฉ ๊ตฌ๋ถํ๋ ๊ฒ์ , ๋ก ํ๋ค.
๋ํ, ํ๋์ ๊ฐ์ฒด๋ ํค: ๊ฐ ํ์์ผ๋ก ์์ฑํ๋ค.
์ด๋ฐ ์ด์ ๋ก ์ต๊ทผ์๋ JSON์ด XML์ ๋์ฒดํด์ ์ค์ ์ ์ ์ฅ์ด๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ก๋ฑ์ ๋ง์ด ์ฌ์ฉ๋๋ค.
JSON์ ๋ํ ์์ธํ ๋ด์ฉ์ ์๋ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๋ฉด ๋๋ค.
( http://www.json.org/json-ko.html )
JSON API
ECMAscript 5์๋ JSON์ ๊ณต์์ ์ผ๋ก ์ง์ํ๋ API๊ฐ ํฌํจ๋์๋ค.
JSON.parse()
์ธ์๋ก ์ ๋ฌ๋ ๋ฌธ์ฌ์ด์ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ๋ก ๋ณํํ๋ค.
JSON.stringify()
์ธ์๋ก ์ ๋ฌ๋ ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ณํํ๋ค.
Ajax์ JSON
JSON์ ์ง๊ฐ๋ ์๋ฒ์ ํต์ ์ ํ ๋ ๋๋ฌ๋๋ค.
time.php
<?php
$timezones = ["Asia/Seoul", "America/New_York"];
echo implode(',', $timezones);
?>
[ ์คํ ๊ฒฐ๊ณผ ]
Asia/Seoul,America/New_York
์์ ๊ฐ์ด ์๋ฒ์ชฝ์์ timezones๋ผ๋ ๋ฐฐ์ด์ ์ฝค๋ง๋ก ๊ตฌ๋ถํด์ ์ ๋ฌํ๋ค.
ํด๋ผ์ด์ธํธ ์ธก์์๋ ์ด๋ฅผ ๋ฐ์์ ์ฒ๋ฆฌํ๋ค.
demo2.html
<p id="timezones"></p>
<input type="button" id="execute" value="execute" />
<script>
document.querySelector('input').addEventListener('click', function(event){
var xhr = new XMLHttpRequest();
xhr.open('GET', './time.php');
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
var _tzs = xhr.responseText;
var tzs = _tzs.split(',');
var _str = '';
for(var i = 0; i< tzs.length; i++){
_str += '<li>'+tzs[i]+'</li>';
}
_str = '<ul>'+_str+'</ul>';
document.querySelector('#timezones').innerHTML = _str;
}
}
xhr.send();
});
</script>
์ ์์ค ์ฝ๋์ค ์๋ 3์ค์ ์ฝ๋๋ฅผ ๋ถ์ํด๋ณด์.
var _tzs = xhr.responseText;
var tzs = _tzs.split(',');
var _str = '';
๋ฉ์๋ split๋ ์ธ์์ ๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ฌธ์๋ฅผ ์๋ผ์ ๋ฐฐ์ด๋ก ๋ง๋๋ ๊ธฐ๋ฅ์ด ์๋ค.
์ด๋ฅผ ์ด์ฉํ์ฌ ์๋ฒ์์ ์ ์กํ Asia/Seoul,America/New_York๋ฅผ split(',')ํ๋ฉด ๋ฐฐ์ด ['Aasia/Seoul','America/New_York']๊ฐ ๋ง๋ค์ด์ง๋ค.
PHP์ ๋ฐฐ์ด์ ํด๋ผ์ด์ธํธ๋ก ์ ์กํ๊ธฐ ์ํด์ ์ฝค๋ง๋ก ๊ตฌ๋ถ๋ ๋ฌธ์์ด์ ๋ง๋ค์๋ค.
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ด๋ฅผ ๋ฐ์์ ์ฝค๋ง๋ฅผ ๊ตฌ๋ถ์๋ก ๋ค์ ๋ฐฐ์ด๋ก ๋ง๋ค์๋ค.
๋ง์ฝ PHP ๋ฐฐ์ด์ ๊ทธ๋๋ก ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ฌ์ฉํ ์ ์๊ฑฐ๋, ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ฐฐ์ด์ ๊ทธ๋๋ก PHP์์ ์ฌ์ฉํ ์ ์๋ค๋ฉด ์ผ๋ง๋ ํธ๋ฆฌํ ๊น?
์ด๋ ์ฌ์ฉํ๋ ๊ฒ์ด JSON์ด๋ค.
์ ์์ ๋ฅผ ๋ฐํ์ผ๋ก ์๋์์ JSON์ผ๋ก ๋ง๋ค์ด๋ณด์.
time2.php
<?php
$timezones = ["Asia/Seoul", "America/New_York"];
header('Content-Type: application/json');
echo json_encode($timezones);
?>
json_encode๋ PHP์ ๋ฐ์ดํฐ๋ฅผ JSON ํ์์ผ๋ก ์ ํํด์ฃผ๋ PHP์ ๋ด์ฅํจ์๋ค.
[ ์คํ ๊ฒฐ๊ณผ ]
["Asia\/Seoul","America\/New_York"]
์ด์ ๊ฐ์ด ๋ฐฐ์ด๋ก ์ ์ก๋๋ ๊ฒ์ ํ์ธํ ์ ์๋ค.
์ด๋ฅผ ์ฒ๋ฆฌํ๋ JavaScript ์ฝ๋๋ฅผ ๋ณด์.
<p id="timezones"></p>
<input type="button" id="execute" value="execute" />
<script>
document.querySelector('input').addEventListener('click', function(event){
var xhr = new XMLHttpRequest();
xhr.open('GET', './time2.php');
xhr.onreadystatechange = function(){
if(xhr.readyState === 4 && xhr.status === 200){
var _tzs = xhr.responseText;
var tzs = JSON.parse(_tzs);
var _str = '';
for(var i = 0; i< tzs.length; i++){
_str += '<li>'+tzs[i]+'</li>';
}
_str = '<ul>'+_str+'</ul>';
document.querySelector('#timezones').innerHTML = _str;
}
}
xhr.send();
});
</script>
์๋ ์ฝ๋๋ ์๋ฒ์์ ์ ์กํ JSON ๋ฐ์ดํฐ๋ฅผ JavaScript์ ๋ฐฐ์ด๋ก ๋ง๋ค์ ์์๋ค.
var tzs = JSON.parse(_tzs);
์๋ฒ๋ก ๋ฐ์ดํฐ ์ ์ก
์๋ฒ๋ก JSON ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค. ์๋ ์์ ๋ฅผ ์ฐธ๊ณ ํ์.
demo4.html
<p>time : <span id="time"></span></p>
<select id="timezone">
<option value="Asia/Seoul">asia/seoul</option>
<option value="America/New_York">America/New_York</option>
</select>
<select id="format">
<option value="Y-m-d H:i:s">Y-m-d H:i:s</option>
<option value="Y-m-d">Y-m-d</option>
</select>
<input type="button" id="execute" value="execute" />
<script>
document.querySelector('input').addEventListener('click', function(event){
var xhr = new XMLHttpRequest();
xhr.open('POST', './time3.php');
xhr.onreadystatechange = function(){
document.querySelector('#time').innerHTML = xhr.responseText;
}
var data = new Object();
data.timezone = document.getElementById('timezone').value;
data.format = document.getElementById('format').value;
xhr.setRequestHeader("Content-Type", "application/json");
xhr.send(JSON.stringify(data));
});
</script>
time3.php
<?php
$data = json_decode(file_get_contents('php://input'), true);
$d1 = new DateTime;
$d1->setTimezone(new DateTimezone($data['timezone']));
echo $d1->format($data['format']);
?>
'Languages > Java Script' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Js] ํ์ฉ | youtube ์ฌ์์๊ฐ ๊ตฌํ๊ธฐ | ์ํ์ฝ๋ฉ javascript (0) | 2021.02.10 |
---|---|
[Js] jQuery Ajax | javascript (0) | 2021.02.10 |
[Js]๋คํธ์ํฌ ํต์ | Ajax (0) | 2021.02.10 |
[Js] ๋ง์ฐ์ค | jQuery ์ด๋ฒคํธ | on ApI ์ฌ์ฉ๋ฒ (0) | 2021.02.10 |
์์คํ ๊ณต๊ฐ ๊ฐ์ฌํฉ๋๋ค