์น ํ์ด์ง๋ ์๋ก๊ณ ์นจ ์์ด ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๋ค.
์ด ๋ฐฉ์์ด ๋ฐ๋ก AJAX๋ค.
1. AJAX
1) AJAX๋?
AJAX(Asynchronous JavaScript And XML)๋ ํ์ด์ง๋ฅผ ์๋ก๊ณ ์นจํ์ง ์๊ณ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๋ ๊ธฐ์ ์ด๋ค.
๊ธฐ์กด ๋ฐฉ์
- ์์ฒญ → ์ ์ฒด ํ์ด์ง ์๋ก๊ณ ์นจ → ์๋ต
AJAX ๋ฐฉ์
- ์์ฒญ → ๋ฐ์ดํฐ๋ง ์๋ต → ํ๋ฉด ์ผ๋ถ๋ง ๋ณ๊ฒฝ
์ฆ, ๋น๋๊ธฐ ํต์ ๋ฐฉ์์ด๋ค.
2. AJAX ๊ด๋ จ ๋ฉ์๋
jQuery๋ AJAX๋ฅผ ๊ฐ๋จํ๊ฒ ์ฌ์ฉํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค.
1) AJAX ๊ด๋ จ ๋ฉ์๋๋ค
โ $.ajax()
๊ฐ์ฅ ๊ธฐ๋ณธ์ด ๋๋ ๋ฉ์๋
$.ajax({
url: "data.json",
type: "GET",
dataType: "json",
success: function(data) {
console.log(data);
},
error: function(error) {
console.log("์๋ฌ ๋ฐ์");
}
});
์ต์
์ค๋ช
| ์ต์
|
์ค๋ช
|
| url |
์์ฒญ ์ฃผ์ |
| type |
GET / POST |
| data |
์๋ฒ๋ก ๋ณด๋ผ ๋ฐ์ดํฐ |
| dataType |
์๋ต ๋ฐ์ดํฐ ํ์ |
| success |
์ฑ๊ณต ์ ์คํ |
| error |
์คํจ ์ ์คํ |
โก $.get()
$.get("data.json", function(data) {
console.log(data);
});
GET ์์ฒญ ์ ์ฉ
โข $.post()
$.post("server.php", { name: "John" }, function(data) {
console.log(data);
});
POST ์์ฒญ ์ ์ฉ
โฃ $.getJSON()
$.getJSON("data.json", function(data) {
console.log(data);
});
JSON ๋ฐ์ดํฐ ์ ์ฉ
3. AJAX๋ก JSON ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉํ๊ธฐ
JSON์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉํ๋ ๋ฐ์ดํฐ ํ์์ด๋ค.
[
{"name": "Tom", "age": 20},
{"name": "Jane", "age": 25}
]
๋ฐ์ธ๋ฉ ์์
$.getJSON("data.json", function(data) {
let output = "";
$.each(data, function(index, item) {
output += "<p>" + item.name + " - " + item.age + "</p>";
});
$("#result").html(output);
});
- $.each() → ๋ฐ๋ณต ์ฒ๋ฆฌ
- html() → ํ๋ฉด ์ถ๋ ฅ
4. AJAX๋ก XML ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉํ๊ธฐ
XML๋ ์ง์ ๊ฐ๋ฅํ๋ค.
<people>
<person>
<name>Tom</name>
<age>20</age>
</person>
</people>
XML ๋ฐ์ธ๋ฉ ์์
$.ajax({
url: "data.xml",
dataType: "xml",
success: function(data) {
$(data).find("person").each(function() {
let name = $(this).find("name").text();
let age = $(this).find("age").text();
$("#result").append("<p>" + name + " - " + age + "</p>");
});
}
});
5. ์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณด์ ์ ์ฑ
๊ณผ ์ธ๋ถ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
๋ธ๋ผ์ฐ์ ์๋ Same-Origin-Policy(๋์ผ ์ถ์ฒ ์ ์ฑ
)๊ฐ ์๋ค.
์ฆ,
- ๋ค๋ฅธ ๋๋ฉ์ธ
- ๋ค๋ฅธ ํฌํธ
- ๋ค๋ฅธ ํ๋กํ ์ฝ
์์ ์ง์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ฉด ์ฐจ๋จ๋๋ค.
โ CORS(Cross-Origin Resource Sharing)
์๋ฒ์์ ํ์ฉํด์ผ ์ธ๋ถ ์์ฒญ์ด ๊ฐ๋ฅํ๋ค.
์๋ต ํค๋์ ์๋ ์ฝ๋ ๋ช
์
Access-Control-Allow-Origin: *
๋๋ ํน์ ๋๋ฉ์ธ ์ง์
โก JSONP(๊ตฌ๋ฒ์ ๋ฐฉ์)
CORS ์ด์ ์๋ JSONP๋ฅผ ์ฌ์ฉํ๋ค.
$.ajax({
url: "https://example.com/data",
dataType: "jsonp"
});
ํ์ฌ๋ ๊ฑฐ์ ์ฌ์ฉ๋์ง ์๋๋ค.