
AJAXλ asynchronous Javascript and XML μ λλ€. μμ¦μ XML λ³΄λ€ HTMLμ΄λ JSONμ λ λ§μ΄ μ°μ§λ§, κ°λ° λΉμ xmlμ΄ μ£Όλ₯λΌμ μ΄λ¦μ΄ κ·Έλ κ² λ κ²μ λλ€.
κΈ°μ‘΄μ μΉμμλ ν λ² νμ΄μ§λ₯Ό λ‘λ©νλ©΄ λ€λ₯Έ νμ΄μ§λ₯Ό λ‘λ©νκΈ° μν΄μ λ§ν¬λ₯Ό νκ³ λμ΄κ°μΌ νμ΅λλ€. κ·Έλ κ² λλ©΄ νν λ§νλ νμ΄μ§ κΉλΉ‘μμ΄ λ°μν©λλ€.
AJAX λ μΉνμ΄μ§ μ 체λ₯Ό λ€μ λ‘λ©νμ§ μκ³ λ, μΉνμ΄μ§μ μΌλΆλΆλ§μ κ°±μ ν μ μκ² ν΄μ€λλ€. Ajaxλ₯Ό μ΄μ©νλ©΄ λ°±κ·ΈλΌμ΄λ μμμμ μλ²μ ν΅μ νμ¬, κ·Έ κ²°κ³Όλ₯Ό μΉνμ΄μ§μ μΌλΆλΆμλ§ νμν μ μμ΅λλ€.
μ΄μ²λΌ λΉλκΈ°μ μΌλ‘ μλ²μ μμ²μ νμ¬ νμ΄μ§ μ ν μμ΄λ μλ‘μ΄ λ°μ΄ν°λ₯Ό κ°μ Έμ¬ μ μμ΅λλ€.
AJAXλ₯Ό ν΅ν μΉ λΈλΌμ°μ μ μΉ μλ² κ°μ ν΅μ μ μ°¨λ λ€μκ³Ό κ°μ΅λλ€.

XMLHttpRequest κ°μ²΄λ λΈλΌμ°μ μ μλ² κ°μ λ°μ΄ν°λ₯Ό κ΅νν μ μλλ‘ λμμ£Όλ μλ°μ€ν¬λ¦½νΈ κ°μ²΄λ‘, AJAX μμ²μ ν΅ν΄ λΉλκΈ°μ μΌλ‘ λ°μ΄ν°λ₯Ό μλ²μ μμ²νκ³ , μλ΅μ λ°μ μ μμ΅λλ€. μΉ λΈλΌμ°μ κ° λ°±κ·ΈλΌμ΄λμμ κ³μν΄μ μλ²μ ν΅μ ν μ μλ κ²μ λ°λ‘ μ΄ κ°μ²΄λ₯Ό μ¬μ©νκΈ° λλ¬Έμ
λλ€.
openλ©μλ μ¬μ©)sendλ©μλ μ¬μ©)onreadystatechangeλλ loadμ΄λ²€νΈ)μλλ XMLHttpRequestλ₯Ό μ¬μ©ν΄ μλ²λ‘ GET μμ²μ 보λ΄κ³ μλ΅μ μ²λ¦¬νλ μμ μ
λλ€.
// 1. XMLHttpRequest κ°μ²΄ μμ±
const xhr = new XMLHttpRequest();
// 2. μμ² μ€λΉ (GET μμ² λ°©μ, URL, λΉλκΈ° μ¬λΆ)
xhr.open("GET", "https://api.example.com/data", true);
// 3. μλ΅ μ²λ¦¬
xhr.onreadystatechange = function() {
if (xhr.readyState === 4) { // μμ² μλ£
if (xhr.status === 200) { // μ±κ³΅
const data = JSON.parse(xhr.responseText);
console.log("Response data:", data);
} else {
console.error("Error:", xhr.statusText);
}
}
};
// 4. μμ² μ μ‘
xhr.send();
xhr.readyState : μμ²μ μνλ₯Ό λνλ΄λ κ°μΌλ‘, λ€μκ³Ό κ°μ μνκ° μμ΅λλ€.UNSENT - μμ²μ΄ μ΄κΈ°ν λμ§ μμOPEND - open()μ΄ νΈμΆλ μνHEADERS_RECEIVED - μμ²μ΄ μμ λκ³ , μλ΅ ν€λκ° μ€λΉλ¨LOADING - μλ΅ λ³Έλ¬Έμ λ°κ³ μλ μνDONE - μμ²μ΄ μλ£λκ³ μλ΅μ΄ μ€λΉλ μνxhr.status : μλ² μλ΅μ HTTP μν μ½λ (200, 404, 500 λ±)xhr.responseText : μλ²λ‘λΆν° λ°μ μλ΅ λ°μ΄ν°λ₯Ό λ¬Έμμ΄ ννλ‘ λ°ν ν©λλ€.xhr.responseXML : XML ννλ‘ μλ΅μ λ°μ λ μ¬μ©λ©λλ€. POST μμ²μ μλ²μ λ°μ΄ν°λ₯Ό μ μ‘ν λ μ£Όλ‘ μ¬μ©λ©λλ€.
// 1. XMLHttpRequest κ°μ²΄ μμ±
const xhr = new XMLHttpRequest();
// 2. μμ² μ€λΉ (POST μμ² λ°©μ)
xhr.open("POST", "https://api.example.com/data", true);
xhr.setRequestHeader("Content-Type", "application/json"); // ν€λ μ€μ
// 3. μλ΅ μ²λ¦¬
xhr.onreadystatechange = function() {
if (xhr.readyState === 4 && xhr.status === 200) {
const response = JSON.parse(xhr.responseText);
console.log("Response:", response);
}
};
// 4. μμ² μ μ‘
const data = JSON.stringify({ name: "Alice", age: 30 });
xhr.send(data);
XMLHttpRequestλ μ€λλ λ°©μμ΄μ§λ§, μ΅μ μλ°μ€ν¬λ¦½νΈμμλ Fetch APIκ° λ체 κΈ°λ₯μ μ 곡νμ¬ μ½λκ° λ κ°κ²°ν΄μ‘μ΅λλ€. XMLHttpRequestλ μ½λ°± κΈ°λ°μ΄λΌ μ½λκ° λ³΅μ‘ν΄μ§ μ μμ§λ§, Fetch APIλ Promise κΈ°λ°μΌλ‘ λΉλκΈ° μ²λ¦¬λ₯Ό λ³΄λ€ κ°λ¨νκ² λ§λλλ€.
μμ¦ λλΆλΆμ ajax μμ²μ 보λΌλ fetch()λ axios λΌμ΄λΈλ¬λ¦¬λ₯Ό μ¬μ©νμ§λ§, λͺλͺ μ ν΅μ΄ μλ κΈ°μ
μμ λ κ±°μ νλ‘μ νΈ λλ¬Έμ jQuery AJAXλ₯Ό μ¬μ©νκ³€ ν©λλ€.
jQueryμ $.ajax()λ©μλλ AJAX μμ²μ μ½κ² λ§λ€ μ μλλ‘ λμμ£Όλ λ©μλ μ
λλ€. GET, POSTμ κ°μ HTTP λ©μλλ₯Ό μ€μ νκ³ , μμ²μ νμν λ°μ΄ν°λ₯Ό μλ²λ‘ 보λ΄κ³ , μλ΅μ λ°μμ μ²λ¦¬νλ λ°©μμΌλ‘ μ¬μ©λ©λλ€.
$.ajax({
url : "μμ²ν URL",
method : "GET", //λλ "POST", κΈ°λ³Έκ°μ "GET"
data : {key1 : "value1", key2 : "value2"}, // μλ²λ‘ λ³΄λΌ λ°μ΄ν°
success : function(response){
// μμ²μ΄ μ±κ³΅νμ λ μ€νλ μ½λ
},
error : function(xhr, status, error){
// μμ²μ΄ μ€ν¨νμ λ μ€νλ μ½λ
}
});
url : μμ²ν μλ²μ URLμ μ§μ ν©λλ€.method : HTTP μμ² λ°©μμ μ€μ ν©λλ€."GET", "POST", "PUT", "DELETE" λ±μ μ¬μ©ν μ μμ΅λλ€.data : μλ²λ‘ λ³΄λΌ λ°μ΄ν°λ₯Ό κ°μ²΄ νμμΌλ‘ μμ±ν©λλ€.success : μμ²μ΄ μ±κ³΅νμ λ μ€νν μ½λ°± ν¨μμ
λλ€.error : μμ²μ΄ μ€ν¨νμ λ μ€νν μ½λ°± ν¨μμ
λλ€.dataType : μλ²μμ λ°μ μλ΅ λ°μ΄ν°μ νμμ μ§μ ν©λλ€. "json", "xml", "html", "text" λ±μ΄ μμ΅λλ€.μλλ GETμμ²μ μ¬μ©ν΄ μλ²μμ λ°μ΄ν°λ₯Ό κ°μ Έμ€λ μμ μ
λλ€.
$.ajax({
url : "/example/media/request.ajax", // ν΄λΌμ΄μΈνΈκ° HTTP μμ²μ λ³΄λΌ μλ²μ URL μ£Όμ
data : {name : "JJS"}, // HTTP μμ²κ³Ό ν¨κ» μλ²λ‘ λ³΄λΌ λ°μ΄ν°
method: "GET", // HTTP μμ² λ°©μ(GET, POST)
dataType: "json", // μλ²μμ 보λ΄μ€ λ°μ΄ν°μ νμ
success : function(response){
console.log("μ±κ³΅νμμ΅λλ€.",response);
},
error : function(xhr, status, error){
console.error("μ€ν¨νμμ΅λλ€.", status, error);
}
});
$.ajax({
url : 'http://example.com/api/user/1',
method : 'POST', // POST μμ²
data : {name : 'JJS'}, //λλ data : formData.serialize(), HTTP μμ²κ³Ό ν¨κ» λ³΄λΌ λ°μ΄ν°
success : function(response){
console.log('μ±κ³΅νμμ΅λλ€.');
},
error : function(error){
console.error('μ€ν¨νμμ΅λλ€.', error);
}
});
beforeSend : μμ²μ΄ μλ²λ‘ 보λ΄μ§κΈ° μ μ μ€νλ©λλ€. μ£Όλ‘ λ‘λ© μ λλ©μ΄μ
μ νμν λ μ¬μ©λ©λλ€.complete : μμ²μ΄ μλ£λλ©΄ μ±κ³΅ μ¬λΆμ μκ΄μμ΄ μ€νλ©λλ€. λ‘λ© μ λλ©μ΄μ
μ μ’
λ£ν λ μ¬μ©ν©λλ€.$.ajax({
url : "https://api.example.com/data",
method : "GET",
beforeSend : function(){
console.log("Loading...");
},
complete : function(){
console.log("Request finished.");
},
success : function(){
console.log("Success: ", response);
},
error : function(xhr, status, error){
console.error("Error:", status, error);
},
})