page(Doc) not found /ko/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents
íëì ì¹ì¬ì´í¸ì ì í리ì¼ì´ì ìì ë§¤ì° íí ë ë¤ë¥¸ ìì ì ì íì´ì§ ì 체를 ë¶ë¬ì¬ íì ìì´ ì¹íì´ì§ì ì¹ì ì ê°±ì í기 ìí´ ìë²ìì ê°ë³ ë°ì´í° í목ì ê²ìíë ê²ì ëë¤. ì´ê²ì ì¬ìí´ ë³´ì´ì§ë§ ì¬ì´í¸ì ì±ë¥ê³¼ ëìì í° ìí¥ì 미쳤기 ë문ì ì´ ë¬¸ìììë ê°ë ì ì¤ëª íê³ ì´ë¥¼ ê°ë¥íê² íë 기ì , í¹í Fetch API를 ì´í´ë³´ëë¡ íê² ìµëë¤.
ì¬ê¸°ì 문ì ê° ë¬´ìì ëê¹?ì¹ íì´ì§ë HTML íì´ì§ì ì¤íì¼ìí¸, ì¤í¬ë¦½í¸ ë° ì´ë¯¸ì§ì ê°ì ë¤ìí ë¤ë¥¸ íì¼ë¡ 구ì±ëì´ ììµëë¤. ì¹ íì´ì§ ë¡ëì 기본 모ë¸ì ë¸ë¼ì°ì ê° íì´ì§ë¥¼ íìíë ë° íìí íì¼ì ëí´ ìë²ìì íë ì´ìì HTTP ìì²ì íê³ ìë²ë ìì²ë íì¼ë¡ ìëµíë ê²ì ëë¤. ë¤ë¥¸ íì´ì§ë¥¼ 방문íë©´ ë¸ë¼ì°ì ë ì íì¼ì ìì²íê³ ìë²ë íì¼ì ìëµí©ëë¤.
ì´ ëª¨ë¸ì ë§ì ì¬ì´í¸ìì ìë²½íê² ëìí©ëë¤. íì§ë§ ë§¤ì° ë°ì´í° ì¤ì¬ì ì¸ ì¹ ì¬ì´í¸ë¥¼ ìê°í´ ë³´ì¸ì. ì를 ë¤ì´, ë²¤ì¿ ë² ê³µê³µ ëìê´ê°ì ì¹ ì¬ì´í¸ë¥¼ ìê°í´ ë³´ì¸ì. 무ìë³´ë¤ë ì´ì ê°ì ì¬ì´í¸ë¥¼ ë°ì´í°ë² ì´ì¤ì ëí ì¬ì©ì ì¸í°íì´ì¤ë¡ ìê°í ì ììµëë¤. í¹ì ì¥ë¥´ì ì± ì ê²ìíê±°ë ì´ì ì ë¹ë¦° ì± ì 기ë°ì¼ë¡ ë§ìì ëë ì± ì ëí ì¶ì²ì ë³´ì¬ì¤ ì ììµëë¤. ì´ ìì ì ìíí ë íìí ì ëì ì¸í¸ë¡ íì´ì§ë¥¼ ì ë°ì´í¸í´ì¼ í©ëë¤. íì§ë§ íì´ì§ í¤ë, ì¬ì´ëë°, ë°ë¥ê¸ê³¼ ê°ì í목ì í¬í¨í ëë¶ë¶ì íì´ì§ ì½í ì¸ ë ëì¼íê² ì ì§ë©ëë¤.
ì´ ì íµì ì¸ ë°©ìì 문ì ì ì íì´ì§ì í ë¶ë¶ì ëí ì ë°ì´í¸ìë ì ì²´ íì´ì§ë¥¼ ê°ì ¸ì ë¡ëí´ì¼ íë¤ë ê²ì ëë¤. ì´ë ë¹í¨ì¨ì ì´ê³ ì¬ì©ì ê²½íì´ ì¢ì§ ìì ì ììµëë¤.
ë°ë¼ì ë§ì ì¹ì¬ì´í¸ììë 기존 ëª¨ë¸ ëì JavaScript API를 ì¬ì©íì¬ ìë²ì ë°ì´í°ë¥¼ ìì²íê³ íì´ì§ ë¡ë ìì´ íì´ì§ ì½í ì¸ ë¥¼ ì ë°ì´í¸í©ëë¤. ë°ë¼ì ì¬ì©ìê° ì ì íì ê²ìí ë ë¸ë¼ì°ì ë íì´ì§ë¥¼ ì ë°ì´í¸íë ë° íìí ë°ì´í°(ì: íìí ì ì± ì¸í¸)ë§ ìì²í©ëë¤.
ì¬ê¸°ì 주ì APIë Fetch APIì ëë¤. ì´ë¥¼ íµí´ íì´ì§ìì ì¤íëë JavaScriptê° í¹ì 리ìì¤ë¥¼ ê²ìí기 ìí´ ìë²ì HTTP ìì²ì í ì ììµëë¤. ìë²ê° ì´ë¥¼ ì ê³µíë©´ JavaScriptë ì¼ë°ì ì¼ë¡ DOM ì¡°ì API를 ì¬ì©íì¬ íì´ì§ë¥¼ ì ë°ì´í¸í기 ìí ë°ì´í°ë¥¼ ì¬ì©í ì ììµëë¤. ìì²ëë ë°ì´í°ë 구조íë ë°ì´í°ë¥¼ ì ì¡íë ë° ì í©í íìì¸ JSONì¸ ê²½ì°ê° ë§ì§ë§, HTMLì´ê±°ë í ì¤í¸ì¼ ìë ììµëë¤.
ì´ë Amazon, YouTube, eBay ë±ê³¼ ê°ì ë°ì´í° ê¸°ë° ì¬ì´í¸ìì íí ë³¼ ì ìë í¨í´ì ëë¤.
ì°¸ê³ : ì´ê¸°ì ì´ ì¼ë°ì ì¸ ê¸°ë²ì XML ë°ì´í°ë¥¼ ìì²íë ê²½í¥ì´ ìì기 ë문ì Asynchronous JavaScriptì XML(Ajax)ë¡ ìë ¤ì¡ìµëë¤. ìì¦ìë ë³´íµ ê·¸ë ì§ ìì§ë§(JSONì ìì²íë ê²½ì°ê° ë ë§ì ê²ì ëë¤), ê²°ê³¼ë ì¬ì í ëê°ì¼ë©°, ì¬ì í "Ajax"ë¼ë ì©ì´ê° ì´ ê¸°ë²ì ì¤ëª íë ë° ì주 ì¬ì©ë©ëë¤.
ìë를 ë ëì´ê¸° ìí´ ì¼ë¶ ì¬ì´í¸ë ì¬ì©ìê° ì²ì ìì²í ë ìì ê³¼ ë°ì´í°ë¥¼ ì¬ì©ì ì»´í¨í°ì ì ì¥í기ë íëë°, ì´ë íì´ì§ê° ì²ì ë¡ëë ëë§ë¤ ìë¡ì´ ë³µì¬ë³¸ì ë¤ì´ë¡ëíë ëì ë¤ì 방문 ì ë¡ì»¬ ë²ì ì ì¬ì©íë¤ë ê²ì ì미í©ëë¤. ì½í ì¸ ë ì ë°ì´í¸ê° ë ê²½ì°ìë§ ìë²ìì ë¤ì ë¡ëë©ëë¤.
Fetch APIFetch API ìì ëª ê°ì§ë¥¼ ì´í´ë´ ìë¤.
í ì¤í¸ ì½í ì¸ ê°ì ¸ì¤ê¸°ì´ ìììë ëª ê°ì§ ë¤ë¥¸ í ì¤í¸ íì¼ ì¤ìì ë°ì´í°ë¥¼ ìì²íì¬ ì½í ì¸ ììì ì±ì°ë ë° ì¬ì©í©ëë¤.
ì´ ì¼ë ¨ì íì¼ì ì°ë¦¬ì ê°ì§ ë°ì´í°ë² ì´ì¤ ìí ì í ê²ì ëë¤. ì¤ì ìì© íë¡ê·¸ë¨ììë PHP, Python, Nodeì ê°ì ìë² ì¸¡ ì¸ì´ë¥¼ ì¬ì©íì¬ ë°ì´í°ë² ì´ì¤ìì ë°ì´í°ë¥¼ ìì²í ê°ë¥ì±ì´ ë ëìµëë¤. ê·¸ë¬ë ì¬ê¸°ìë ì´ ë¬¸ì 를 ë¨ìíê² ì ì§íê³ í´ë¼ì´ì¸í¸ 측 ë¶ë¶ì ì§ì¤íê³ ì í©ëë¤.
ì´ ìì 를 ììíë ¤ë©´, ì ì»´í¨í°ì ì ëë í°ë¦¬ì fetch-start.html ë¡ì»¬ ë³µì¬ë³¸ê³¼ 4ê°ì í ì¤í¸ íì¼(verse1.txt, verse2.txt, verse3.txt, verse4.txt)ì ë§ëëë¤. ì´ ìì ììë ëë¡ë¤ì´ ë©ë´ìì ì íí ìì ë¤ë¥¸ ì ì ê°ì ¸ìµëë¤.
<script>
ìì ë°ë¡ ë´ë¶ì ë¤ì ì½ë를 ì¶ê°í©ëë¤. ê·¸ë¬ë©´ <select>
ë° <pre>
ììì ëí ì°¸ì¡°ê° ì ì¥ëê³ ë¦¬ì¤ëê° <select>
ììì ì¶ê°ëë¯ë¡ ì¬ì©ìê° ì ê°ì ì ííë©´ ì ê°ì´ ë§¤ê° ë³ìë¡ updateDisplay()
ë¼ë ì´ë¦ì í¨ìì ì ë¬ë©ëë¤.
const verseChoose = document.querySelector("select");
const poemDisplay = document.querySelector("pre");
verseChoose.addEventListener("change", () => {
const verse = verseChoose.value;
updateDisplay(verse);
});
updateDisplay()
í¨ì를 ì ìí´ ë³´ê² ìµëë¤. ì°ì ì´ì ì½ë ë¸ë¡ ìëì ë¤ìì ëì¼ììì¤. ì´ê²ì í¨ìì ë¹ ê»ë°ê¸°ì
ëë¤.
function updateDisplay(verse) {
}
ëì¤ì íìíë¯ë¡ ë¡ëí í
ì¤í¸ íì¼ì ê°ë¦¬í¤ë ìëì ì¸ URLì 구ì±íë ê²ì¼ë¡ ììí©ëë¤. <select>
ììì ê°ì ì íí <option>
ë´ë¶ì í
ì¤í¸ì ëì¼í©ëë¤(value ìì±ì ë¤ë¥¸ ê°ì ì§ì íì§ ìë í). ì를 ë¤ì´ "Verse 1"ì
ëë¤. í´ë¹ Verse í
ì¤í¸ íì¼ì "Verse 1.txt"ì´ë©° HTML íì¼ê³¼ ëì¼í ëë í°ë¦¬ì ìì¼ë¯ë¡ íì¼ ì´ë¦ë§ ìì¼ë©´ ë©ëë¤.
ê·¸ë¬ë ì¹ ìë²ë ëì문ì를 구ë¶íë ê²½í¥ì´ ìì¼ë©° íì¼ ì´ë¦ì ê³µë°±ì´ ììµëë¤. "Verse 1"ì "verse1.txt"ë¡ ë³ííë ¤ë©´ "V"를 ì문ìë¡ ë³ííê³ ê³µë°±ì ì ê±°í ë¤ì ëì ".txt"를 ì¶ê°í´ì¼ í©ëë¤. ì´ë replace()
, toLowerCase()
, template literalë¡ ìíí ì ììµëë¤. updateDisplay()
í¨ì ë´ë¶ì ë¤ì íì ì¶ê°í©ëë¤.
verse = verse.replace(" ", "").toLowerCase();
const url = `${verse}.txt`;
ë§ì¹¨ë´ Fetch API를 ì¬ì©í ì¤ë¹ê° ëììµëë¤.
// `fetch()`, URLì ì ë¬í©ëë¤.
fetch(url)
// fetch()ë Promise를 ë°íí©ëë¤. ìë²ë¡ë¶í° ìëµì ë°ìì ë,
// ìëµê³¼ í¨ê» Promiseì `then()` í¸ë¤ë¬ê° ë¶ë¦½ëë¤.
.then((response) => {
// ìì²ì ì±ê³µíì§ ëª»íì ë ìë¬ë¥¼ ëì§ëë¤.
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
// ê·¸ë ì§ ìì¼ë©´(ìëµì´ ì±ê³µí ê²½ì°), í¸ë¤ë¬ê°
// response.text()를 í¸ì¶íì¬ í
ì¤í¸ë¡ ìëµì ê°ì ¸ì¤ê³ ,
// `response.text()`ì ìí´ Promiseê° ì¦ì ë°íë©ëë¤.
return response.text();
})
// response.text()ê° ì±ê³µíë©´ `then()` í¸ë¤ë¬ë
// í
ì¤í¸ì í¨ê» í¸ì¶ëê³ , ì´ë¥¼ `poemDisplay` ììì ë³µì¬í©ëë¤.
.then((text) => {
poemDisplay.textContent = text;
})
// ë°ìí ì ìë ì¤ë¥ë¥¼ ë°ê²¬íê³
// `poemDisplay` ììì ë©ìì§ë¥¼ íìí©ëë¤.
.catch((error) => {
poemDisplay.textContent = `Could not fetch verse: ${error}`;
});
ì¬ê¸°ì ì¤ëª í ê²ì´ 꽤 ë§ìµëë¤.
먼ì , Fetch APIì ì§ì
ì ì fetch()
ë¼ë ê¸ë¡ë² í¨ìë¡, URLì 매ê°ë³ìë¡ ì¬ì©í©ëë¤(ì¬ì©ì ì§ì ì¤ì ìë ë¤ë¥¸ ì íì ì¸ ë§¤ê°ë³ìê° íìíì§ë§ ì¬ê¸°ìë ì¬ì©íì§ ììµëë¤).
ë¤ìì¼ë¡ fetch()
ë Promise
를 ë°ííë ë¹ë기 APIì
ëë¤. ê·¸ê²ì´ 무ìì¸ì§ 모른ë¤ë©´ ë¹ë기 JavaScript 모ëì ì½ì¼ì¸ì. í¹í promisesì ëí 문ì를 ì½ê³ ì¬ê¸°ë¡ ì¤ì¸ì. ê·¸ 문ìë fetch()
APIì ëí´ìë ì´ì¼ê¸°íê³ ììµëë¤!
ê·¸ëì fetch()
ë promise를 ë°íí기 ë문ì í¨ì를 ë°íë promiseì then()
ë©ìëì ì ë¬í©ëë¤. ì´ ë©ìëë HTTP ìì²ì´ ìë²ë¡ë¶í° ìëµì ë°ìì ë í¸ì¶ë©ëë¤. í¸ë¤ë¬ìì ìì²ì´ ì±ê³µíëì§ íì¸íê³ ì±ê³µíì§ ìì ê²½ì° ì¤ë¥ë¥¼ ëì§ëë¤. ê·¸ë ì§ ìì¼ë©´ response.text()
를 í¸ì¶íì¬ ìëµ ë³¸ë¬¸ì í
ì¤í¸ë¡ ê°ì ¸ìµëë¤.
response.text()
ëí ë¹ë기ì ì
ëë¤. ê·¸ëì ì°ë¦¬ë ê·¸ê²ì´ ë°ííë promise를 ë°ííê³ , ì´ ìë¡ì´ promiseì then()
ë©ìëì ì ë¬í©ëë¤. ì´ í¨ìë ìëµ í
ì¤í¸ê° ì¤ë¹ëë©´ í¸ì¶ëê³ ê·¸ ììì í
ì¤í¸ë¡ <pre>
ë¸ë¡ì ì
ë°ì´í¸í©ëë¤.
ë§ì§ë§ì¼ë¡, ì°ë¦¬ë ì°ë¦¬ê° í¸ì¶í ë¹ë기 í¨ì ëë ê·¸ë¤ì í¸ë¤ë¬ìì ë°ìíë ì¤ë¥ë¥¼ ì¡ê¸° ìí´ ë§ì§ë§ì catch()
í¸ë¤ë¬ë¥¼ ì²´ì¸í©ëë¤.
ìì ì í ê°ì§ 문ì ë ì²ì ë¡ëí ë ì를 íìíì§ ìëë¤ë ê²ì
ëë¤. ì´ ë¬¸ì 를 í´ê²°íë ¤ë©´ ì½ë 맨 ìë(ë«íë </script>
íê·¸ ë°ë¡ ì)ì ë¤ì ë ì¤ì ì¶ê°íì¬ ê¸°ë³¸ì ì¼ë¡ verse 1ì ë¡ëíê³ <select>
ììê° íì ì¬ë°ë¥¸ ê°ì ëíë´ëì§ íì¸íì¸ì.
updateDisplay("Verse 1");
verseChoose.value = "Verse 1";
ìë²ìì ìì 를 ì ê³µí기
ìµì ë¸ë¼ì°ì ë ë¡ì»¬ íì¼ìì ìì 를 ì¤ííê¸°ë§ íë©´ HTTP ìì²ì ì¤ííì§ ììµëë¤. ì´ë ë³´ì ì í ë문ì ëë¤(ë³´ìì ëí ìì¸í ë´ì©ì ì¹ ì¬ì´í¸ ë³´ìì ì°¸ê³ íì¸ì.).
ì´ë¥¼ í´ê²°íë ¤ë©´ ë¡ì»¬ ì¹ ìë²ë¥¼ íµí´ ìì 를 ì¤ííì¬ í ì¤í¸í´ì¼ í©ëë¤. ì´ ë°©ë²ì ììë³´ë ¤ë©´ ë¡ì»¬ ê²ì¦ ìë² ì¤ì ê°ì´ë를 ì°¸ê³ íì¸ì.
The can storeì´ ìì ììë íµì¡°ë¦¼ë§ í매íë ê°ìì ìí¼ë§ì¼ì¸ ìº ê°ê²(The Can Store)ë¼ë ìí ì¬ì´í¸ë¥¼ ë§ë¤ììµëë¤. ì´ ìì ë GitHubìì ë¼ì´ë¸ë¡ ë³¼ ì ìì¼ë©° ìì¤ ì½ë를 ë³¼ ì ììµëë¤.
기본ì ì¼ë¡ ì¬ì´í¸ìë 모ë ì íì´ íìëì§ë§, ì¼ìª½ ì´ì ìë ìì 컨í¸ë¡¤ì ì¬ì©íì¬ ë²ì£¼, ê²ìì´ ëë ë ê°ì§ 모ëë¡ ì íì íí°ë§í ì ììµëë¤.
ì¹´í ê³ ë¦¬ë³, ê²ìì´ë³ ì í íí°ë§, 문ìì´ ì¡°ì, UIì ë°ì´í°ê° ì¬ë°ë¥´ê² íìëëë¡ ì²ë¦¬íë ë³µì¡í ì½ëê° ìë¹í ë§ì´ ììµëë¤. 문ììì ë¤ ë¤ë£¨ì§ë ìê² ì§ë§, ì½ëìì ê´ë²ìí 주ìì ì°¾ì ì ììµëë¤(can-script.js를 ì°¸ê³ íì¸ì.).
ê·¸ë¬ë Fetch ì½ëì ëí´ ì¤ëª íê² ìµëë¤.
Fetch를 ì¬ì©íë 첫 ë²ì§¸ ë¸ë¡ì JavaScript ìì ë¶ë¶ìì ì°¾ì ì ììµëë¤.
fetch("products.json")
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
return response.json();
})
.then((json) => initialize(json))
.catch((err) => console.error(`Fetch problem: ${err.message}`));
fetch()
í¨ìë promise를 ë°íí©ëë¤. ì´ê²ì´ ì±ê³µì ì¼ë¡ ìë£ëë©´ 첫 ë²ì§¸ .then()
ë¸ë¡ ë´ë¶ì í¨ììë ë¤í¸ìí¬ìì ë°íë response
ê° í¬í¨ë©ëë¤.
ì´ í¨ì ë´ë¶ë ë¤ìê³¼ ê°ìµëë¤.
json()
를 í¸ì¶í©ëë¤. ê·¸ë¬ë©´ JSON ê°ì²´ë¡ ë°ì´í°ë¥¼ ê°ì ¸ìµëë¤. ì°ë¦¬ë response.json()
ê° ë°íí promise를 ë°íí©ëë¤.ë¤ìì¼ë¡ ë°íë promiseì then()
ë©ìëì í¨ì를 ì ë¬í©ëë¤. ì´ í¨ìë ìëµ ë°ì´í°ë¥¼ JSONì¼ë¡ í¬í¨íë ê°ì²´ë¥¼ ë°ê³ , ì´ë¥¼ initialize()
í¨ìì ì ë¬í©ëë¤. ì¬ì©ì ì¸í°íì´ì¤ì 모ë ì íì íìíë íë¡ì¸ì¤ë¥¼ ììíë í¨ìì
ëë¤.
ì¤ë¥ë¥¼ ì²ë¦¬í기 ìí´ ì²´ì¸ ëì .catch()
ë¸ë¡ì ì°ê²°í©ëë¤. ì´ë¤ ì´ì ë¡ ì¸í´ promiseê° ì¤í¨íë©´ ì¤íë©ëë¤. ê·¸ ììë err
ê°ì²´ë¥¼ 매ê°ë³ì를 ë°ë í¨ìê° í¬í¨ëì´ ììµëë¤. ì´ err
ê°ì²´ë ë°ìí ì¤ë¥ì ì±ê²©ì ë³´ê³ íë ë° ì¬ì©í ì ìì¼ë©°, ì´ ê²½ì° ê°ë¨í console.error()
를 ì¬ì©íì¬ ìíí©ëë¤.
ê·¸ë¬ë ìì í ì¹ì¬ì´í¸ë ì¬ì©ì íë©´ì ë©ìì§ë¥¼ íìíê³ ìí©ì í´ê²°í ì ìë ìµì
ì ì ê³µí¨ì¼ë¡ì¨, ì´ ì¤ë¥ë¥¼ ë³´ë¤ ì ì íê² ì²ë¦¬í ì ìì§ë§, ì°ë¦¬ë ê°ë¨í console.error()
ì¸ìë ì무ê²ë íìíì§ ììµëë¤.
ì¤í¨ ì¬ë¡ë¥¼ ë¤ìê³¼ ê°ì´ í ì¤í¸í ì ììµëë¤.
localhost:8000
ì íµí´) ë¸ë¼ì°ì ê°ë°ì ì½ìì ì´í´ë³´ì¸ì. "Fetch 문ì : HTTP ì¤ë¥: 404"ì ì ì¬í ë©ìì§ê° íìë©ëë¤.ë ë²ì§¸ Fetch ë¸ë¡ì fetchBlob()
í¨ì ë´ë¶ìì ì°¾ì ì ììµëë¤.
fetch(url)
.then((response) => {
if (!response.ok) {
throw new Error(`HTTP error: ${response.status}`);
}
return response.blob();
})
.then((blob) => showProduct(blob, product))
.catch((err) => console.error(`Fetch problem: ${err.message}`));
ì´ë ì´ì ê³¼ ê±°ì ëì¼íê² ìëíì§ë§, json()
ì(를) ì¬ì©íë ëì blob()
ì(를) ì¬ì©í©ëë¤. ì´ ê²½ì° ìëµì ì´ë¯¸ì§ íì¼ë¡ ë°ííê³ , ì´ì ì¬ì©íë ë°ì´í° íìì Blob ("Binary Large Object"ì ì½ìì´ë©°, 기본ì ì¼ë¡ ì´ë¯¸ì§ ëë ë¹ëì¤ íì¼ê³¼ ê°ì í° íì¼ ê°ì ê°ì²´ë¥¼ ëíë´ë ë° ì¬ì©í ì ììµëë¤).
Blobì ì±ê³µì ì¼ë¡ ë°ì¼ë©´ ì´ Blobì íìíë showProduct()
기ë¥ì ì ë¬í©ëë¤.
ëëë¡, í¹í ìë ì½ëììë HTTP ìì²ì ìí´ ì¬ì©ëë XMLHttpRequest
(ì¢
ì¢
"XHR"ë¡ ì½ì¹ë¨)ë¼ë ë ë¤ë¥¸ API를 ë³¼ ì ììµëë¤. ì´ë Fetch ì´ì ì ê²ì¼ë¡, ì¤ì ë¡ AJAX를 구íí기 ìí´ ë리 ì¬ì©ë ìµì´ì APIììµëë¤. Fetchë XMLHttpRequest
ë³´ë¤ ë ë¨ìíê³ ë§ì 기ë¥ì ê°ì¶ê³ ìì¼ë¯ë¡, ì¬ì©í ì ìë¤ë©´ ì¬ì©íë ê²ì´ ì¢ìµëë¤. XMLHttpRequest
를 ì¬ì©íë ìì 를 ê±°ì¹ì§ë ìê² ì§ë§, 첫 ë²ì§¸ ìºì¤í ì´ ìì²ì XMLHttpRequest
ë²ì ì ì´ë¤ 모ìµì¼ì§ ë³´ì¬ëë¦¬ê² ìµëë¤.
const request = new XMLHttpRequest();
try {
request.open("GET", "products.json");
request.responseType = "json";
request.addEventListener("load", () => initialize(request.response));
request.addEventListener("error", () => console.error("XHR error"));
request.send();
} catch (error) {
console.error(`XHR error ${request.status}`);
}
ì¬ê¸°ìë 5ê°ì§ ë¨ê³ê° ììµëë¤.
XMLHttpRequest
ê°ì²´ë¥¼ ìì±í©ëë¤.open()
ë©ìë를 í¸ì¶íì¬ ì´ê¸°íí©ëë¤.load
ì´ë²¤í¸ì ì´ë²¤í¸ 리ì¤ë를 ì¶ê°í©ëë¤. 리ì¤ëììë ë°ì´í°ì í¨ê» initialize()
를 í¸ì¶í©ëë¤.error
ì´ë²¤í¸ì ì´ë²¤í¸ 리ì¤ë를 ì¶ê°í©ëë¤.ëí open()
, send()
ì ìí´ ë°ìí ì¤ë¥ë¥¼ ì²ë¦¬íë ¤ë©´ 모ë ê²ì try...catch ë¸ë¡ì ëíí´ì¼ í©ëë¤.
Fetch APIê° ì´ë³´ë¤ ë ê°ì ë ê²ì´ë¼ê³ ìê°í기를 ë°ëëë¤. í¹í, ì°ë¦¬ê° ë¤ë¥¸ ë ê³³ìì ì´ë»ê² ì¤ë¥ë¥¼ ì²ë¦¬í´ì¼ íëì§ ë³´ì¸ì.
ìì½ì´ 문ìììë Fetch를 ì¬ì©íì¬ ìë²ìì ë°ì´í°ë¥¼ ê°ì ¸ì¤ë ë°©ë²ì ë³´ì¬ì¤ëë¤.
ê°ì´ ë³´ê¸°ì´ ë¬¸ììë ê²í¥ê¸°ìì¼ë¡ ë§ì 주ì ë¤ì´ ë ¼ìëì´ ììµëë¤. ì´ ì£¼ì ë¤ì ëí ë ë§ì ì¸ë¶ ì¬íì ë³´ë ¤ë©´ ë¤ì 문ì를 ìëíì¸ì.
page(Doc) not found /ko/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4