Ajax Tutorial
ÃÑ ÆäÀÌÁö ¼ö : 3224

Àüü ÇÔ¼ö/¿ë¾î»çÀü
Facebook Joinc ±×·ì   Joinc QA »çÀÌÆ®



joinc´Â Firefox¿Í chrome¿¡¼­ Å×½ºÆ® Çß½À´Ï´Ù. IE¿¡¼­´Â Å×À̺íÀÌ ±úÁö°Å³ª À̹ÌÁö°¡ º¸ÀÌÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ƯÈ÷ ±¸±Û DocsÀ̹ÌÁöÀÇ °æ¿ì ¿¢¹Úó¸®µÉ ¼ö ÀÖ½À´Ï´Ù.

Contents

1 Ajax ¼Ò°³
1.1 Ajax°¡ »ç¿ëµÇ´Â ÀÌÀ¯
1.2 AjaxÀÇ ´ÜÁ¡
2 Ajax ±âÃÊ
2.1 XMLHttpRequest °´Ã¼¿Í »ý¼º
2.2 Ajax¿¡¼­ÀÇ ¿äû°ú ÀÀ´ä
2.2.1 ¿äûº¸³»±â
2.2.2 ¿äûó¸®
2.2.3 ½Ç Å×½ºÆ®
2.3 ºê¶ó¿ìÀú ȣȯ¼º
2.4 XMLHttpRequest IDL

Ajax´Â javascript ±â¼úÀ» Áß¿äÇÏ°Ô »ç¿ëÇϴµ¥, javascript´Â ºê¶ó¿ìÀú¸¶´Ù Áö¿ø³»¿ëÀÌ Æ²¸®´Ù. IE´Â Ç¥ÁØÀ» ÁöŰÁö ¾Ê´Â °ÍÀ¸·Î À¯¸íÇѵ¥, ÀÌ ¹®¼­´Â °¡´ÉÇÑ Ç¥ÁØÀ» Áö۵µ·Ï ³ë·ÂÇÒ °ÍÀÌ´Ù. ¸ðµç ¼³¸í°ú Å×½ºÆ®´Â firefox¸¦ ±âÁØÀ¸·Î ÀÌ·ç¾îÁú °ÍÀÌ´Ù. IEÁö¿ø¿¡ ´ëÇÑ ³»¿ëÀº ½Ã°£ÀÌ ³²À¸¸é ´Ù·ç¾îº¸µµ·Ï ÇϰڴÙ.

1 Ajax ¼Ò°³

Ajax´Â Asynchronous Javascript And XML ÀÇ ÁÙÀÓ¸»ÀÌ´Ù. »õ·Î¿î ±â¼úó·³ ¾ê±âÇϰí ÀÖÁö¸¸ (Áö±Ý±îÁö ¾Ë¾Æº» ¹Ù·Î´Â) Ưº°È÷ »õ·Î¿î ±â¼úÀ̶ó°í º¸±â´Â Èûµç°Å °°´Ù. ½Ã½ºÅÛ/³×Æ®¿öÅ© ÇÁ·Î±×·¡¸ÓÀÎ ÇÊÀÚÀÇ ÀÔÀå¿¡¼­ º¸ÀÚ¸é HTMLÀÇ ´ÜÁ¡ÀÎ ÆûÀ» ä¿ö¼­ ³Ñ±â¸é °á°ú¹°·Î µÇµ¹·Á ¹ÞÀº ÆäÀÌÁö¸¦ Ãâ·ÂÇϴ¹®Á¦Á¡À» ÇØ°áÇϱâ À§Çؼ­, ¼ÒÄÏÅë½ÅÀ» »ì¦Äô ³¢¿ö ³õÀº Á¤µµ·Î º¸ÀδÙ.

Áï ¿¬°áÀ» ²÷Áö ¾Ê°í, ¼­¹ö¿Í Åë½ÅÇϸ鼭 µ¿ÀûÀ¸·Î Á¤º¸¸¦ Àü´Þ¹Þ¾Æ¼­ »óÈ£ÀÛ¿ëÇÏ´Â À¥¼­ºñ½ºÀÇ ¼³°è°¡ °¡´ÉÇϵµ·Ï ÇÏ´Â °ÍÀÌ´Ù. ¼­¹ö¿ÍÀÇ Åë½ÅÀº TCP/IP¸¦ ÀÌ¿ëÇϰí, Åë½Å¿¡ »ç¿ëµÇ´Â Á¤º¸´Â XMLÀ» ÀÌ¿ëÇÑ´Ù. Áï Ajax´Â »õ·Î¿î ±â¼úÀ̶ó±â º¸´Ù´Â
  1. HTTP : ¼­¹ö¿Í Ŭ¶óÀÌ¾ðÆ®°¡ »ç¿ëÇÏ´Â ÇÁ·ÎÅäÄÝ
  2. NetWork ÀÀ¿ë : ¼­¹ö¿Í Ŭ¶óÀ̾ðÆ®(ºê¶ó¿ìÀú)°£ÀÇ µ¥ÀÌÅÍ Àü´Þ
  3. Java Script : Àü´ÞµÈ µ¥ÀÌÅͰ´Ã¼ÀÇ Ã³¸®
  4. XML : Àü´Þ¿¡ »ç¿ëµÇ´Â µ¥ÀÌÅÍ Çü½Ä
µî ±âÁ¸¿¡ ÀÌ¹Ì ³ª¿ÍÀÖ´Â ±â¼úÀÇ º¹ÇÕÀÀ¿ëÀ̶ó°í ÇÒ ¼ö ÀÖÀ» °Å °°´Ù. ¾Õ¿¡¼­µµ ¾ð±ÞÇßÁö¸¸ ÀÌ·¯ÇÑ º¹ÇÕÀÀ¿ëÀº ±âÁ¸¿¡µµ ³Î¸® »ç¿ëµÇ°í ÀÖ´ø °ÍµéÀÌ´Ù. AjaxÀÇ ¼º°ú¶ó¸é Ç¥ÁØÈ­µÇ¾î ÀÖÁö ¾Ê´ø ÀÌ·¯ÇÑ ±â¼úÀ» Á¤¸®Çϰí Ç¥ÁØÈ­ ½ÃÄѼ­ ¼ö¸éÀ§(ȤÀº ¸¶ÄÉÆÃ¿µ¿ª)·Î ºÎ»ó½ÃŲ Á¤µµ¶ó°í »ý°¢ÇÏ¸é µÉ°Å °°´Ù.

1.1 Ajax°¡ »ç¿ëµÇ´Â ÀÌÀ¯

¾ÖÇø®ÄÉÀ̼ÇÀ» ¿µ¿ªº°·Î ³ª´«´Ù¸é, Å©°Ô µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ǰú À¥ ¿¡Çø®ÄÉÀ̼ÇÀ¸·Î ³ª´­ ¼ö ÀÖÀ» °ÍÀÌ´Ù. µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ÇÀº ÀϹÝÀûÀ¸·Î °³ÀÎ PC¿¡¼­ ½ÇÇàµÇ¸ç, ¸Å¿ì ºü¸£°í °á°ú°¡ Áï½ÃÀûÀÌ´Ù. ±×·¯³ª ½ÇÇàÀ» À§Çؼ­ ¹Ýµå½Ã ¼³Ä¡µÇ¾î¾ß Çϸç, ÃÖ½ÅÀÇ Á¤º¸¸¦ ¾ò¾î³»±â°¡ Èûµé´Ù¶ó´Â ´ÜÁ¡À» °¡Áø´Ù. »óÈ£ÀÛ¿ë °¡´ÉÇÑ À¯·ÁÇÏ°í ºü¸¥ ÀÎÅÍÆäÀ̽º¸¦ Á¦°øÇÏ´Â °ÍÀº µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ÇÀÇ °¡Àå Å« ÀåÁ¡À̶ó ÇϰڴÙ.

À¥ ¾ÖÇø®ÄÉÀ̼ÇÀº µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ǿ¡ ºñÇØ¼­ ´À¸®°í ºÒÆíÇÑ ÀÎÅÍÆäÀ̽º¸¦ °¡Áö°í ÀÖÀ¸¸ç, ¹ÝÀÀ¼Óµµ ¿ª½Ã ´À¸®´Ù¶ó´Â ´ÜÁ¡À» °¡Áö°í ÀÖ´Ù. ¹Ý¸é ¾îµð¿¡¼­³ª °£´ÜÈ÷ ¼­ºñ½º ¹ÞÀ» ¼ö ÀÖÀ¸¸ç, ÃÖ½ÅÀÇ Á¤º¸¸¦ ½±°Ô ¾òÀ» ¼ö ÀÖ°í, »õ·Î¿î ¾ÖÇø®ÄÉÀ̼ÇÀ» ¸¸µé±â°¡ ¸Å¿ì ½±´Ù´Â ÀåÁ¡À» °¡Áø´Ù. ƯÈ÷ ¾îµð¿¡¼­³ª °£´ÜÈ÷ »ç¿ëÇÒ ¼ö ÀÖ°í, ÃÖ½ÅÀÇ Á¤º¸¸¦ ¾òÀ» ¼ö ÀÖ´Ù´ÂÀåÁ¡Àº ¿©·¯ ´ÜÁ¡¿¡µµ ºÒ±¸Çϰí À¥¾ÖÇø®ÄÉÀ̼ÇÀ» ¼±È£ÇÏ°Ô µÇ´Â ¸Å¿ì °áÁ¤ÀûÀÎ ¿äÀÎÀÌ´Ù.

³×Æ®¿öÅ· ȯ°æÀÌ ÁÁ¾ÆÁö¸é¼­ À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ÀåÁ¡ÀÌ Á¡Á¡ ºÎ°¢µÇ¸é¼­, À¥ ¾ÖÇø®ÄÉÀ̼ÇÀ» µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ¼öÁØÀ¸·Î ¿Ã¸®·Á´Â ½Ãµµ°¡ ÀÖ°Ô µÇ¾ú°í, °á±¹ Ajax°¡ Ç¥ÁØÀûÀÎ ±â¼ú·Î µîÀåÇÏ°Ô µÈ´Ù.

À̻󿡼­ Ajax¶õ À¥ ¾ÖÇø®ÄÉÀ̼ǰú µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ÇÀÇ °£°ÝÀ» ÁÙ¿©ÁÖ±â À§ÇÑ ±â¼úÀ̶ó´Â°É ´«Ä¡Ã«À» °ÍÀÌ´Ù. Ajax ±â¼úÀÌ »ç¿ëµÈ [http]google docs°ú [http]google mapÀ» »ç¿ëÇØ º¸¸é, È®½ÇÈ÷ ±× °£°ÝÀÌ Á¼ÇôÁö°í ÀÖÀ½À» ´À³¥ ¼ö ÀÖÀ» °ÍÀÌ´Ù.

Ajax°¡ ÇÊ¿äÇÑ ¶Ç´Ù¸¥ ÀÌÀ¯´Â ±× È®À强°ú °³¹æ¼º¿¡ ÀÖ´Ù. ¾×Ƽºê¿¢½º, ÀÚ¹Ù¾ÖÇø´, Ç÷º½º¸¦ ÀÌ¿ëÇØµµ Ajax°¡ ÇÏ·Á°í Çß´ø°Í°ú ºñ½ÁÇÑ ÀÏÀ» ÇÒ ¼ö ÀÖ´Ù. ±×·¯³ª ÀÌµé ±â¼úÀº È®ÀåÀÌ ¿ëÀÌÇÏÁö ¾Ê°í Æó¼âµÇ¾î ÀÖ´Ù´Â Å« ´ÜÁ¡À» °¡Áø´Ù. À§ÀÇ ±â¼úÀ» Á¦´ë·Î Ȱ¿ëÇϱâ À§Çؼ­´Â Ç÷¿ÆûÀÌ ¼³Ä¡µÇ¾î ÀÖ¾î¾ß Çϰųª, ´Ù¿î·Îµå ¹Þ¾Æ¾ß ÇÏ´Â µîÀÇ ¹®Á¦°¡ ¹ß»ýÇÑ´Ù. PC¸¦ ¹Ù²Ù±â¶óµµ ÇÏ¸é »õ·Î ¼³Ä¡ÇØ¾ß ÇÑ´Ù. ƯÁ¤ÇÑ ¿î¿µÃ¼Á¦°¡ ¾Æ´Ï¸é ¾Æ¿¹ ÀÛµ¿ÇÏÁö ¾Ê´Â °æ¿ìµµ ¹ß»ýÇÑ´Ù.

¹Ý¸é Ajax´Â XML°ú ÀÚ¹Ù½ºÅ©¸³Æ®ÀÇ ÀÀ¿ëÀ¸·Î °³¹æ¼º°ú ¶Ù¾î³­ È®À强À» °¡Áø´Ù. ±âº»ÀûÀ¸·Î ºê¶ó¿ìÀú¸¸ ÀÖ´Ù¸é, º°´Ù¸¥ ¼ö°í ¾øÀÌ ¾î¶°ÇÑ PC¿¡¼­¶óµµ ½ÇÇàµÉ ¼ö ÀÖ´Ù.

½ÇÁ¦ Ajax´Â ±âÁ¸ÀÇ Ç÷¹½¬¿Í ¾×Ƽºê¿¢½º¸¦ À§ÇùÇϰí ÀÖ´Ù. ¼±ºÀÀåÀº ¿ª½Ã ±¸±ÛÀÌ´Ù. ±¸±ÛÀÌ Ajax¿¡ Àû±ØÀûÀÎ ÀÌÀ¯´Â '»ç¿ëÀÚ¸¦ ºÒÆíÇÏ°Ô ÇÏ´Â ÇൿÀº ÇÏÁö ¾Ê°Ú´Ù'¶ó´Â ±¸±ÛÀÇ Ã¶Çп¡¼­ ½ÃÀ۵ȴÙ.

¿©·¯ºÐÀÌ ±¹³» ´ëÇü Æ÷Å»»çÀÌÆ®¿¡ °¡ÀÔÀ» Çß´Ù°í °¡Á¤Çغ¸ÀÚ. Æ÷Å» »çÀÌÆ®ÀÇ ¼­ºñ½º¸¦ Á¦´ë·Î ÀÌ¿ëÇϱâ À§Çؼ­´Â °ÅÀÇ 10ºÐ µ¿¾È ¸¹°Ô´Â 10°³ °¡·®ÀÇ ÇÁ·Î±×·¥ ¼³Ä¡¿Í °ü·ÃµÈ ¾È³»¹®À» ¸¸³ª¾ß ÇÑ´Ù. À̵é ÇÁ·Î±×·¥Àº ¹«½¼ÀÏÀ» ÇÏ´ÂÁö ¾Ë ¼ö ¾øÀ¸¸ç, ½ºÆÄÀÌ¿þ¾îó·³ ÇൿÇÏ´Â ÇÁ·Î±×·¥µµ ÀÖ´Ù. ½ÉÁö¾î´Â »ç¿ëÀÚÀÇ ÄÄÇ»Å͸¦ ´À¸®°Ô ¸¸µé±âµµ ÇÑ´Ù. ±×·¸´Ù°í Ưº°ÇÑ ¼­ºñ½ºµµ ¾Æ´Ï´Ù. ´º½º, ºí·¯±×, À¥¸ÞÀÏ, Ä¿¹Â´ÏƼ¸¦ À§ÇÑ ÈçÇÑ ¼­ºñ½ºµéÀÌ´Ù. ÀÌ·¯ÇÑ ÀÏÀÌ Æ÷Å»»çÀÌÆ®¿¡ Á¢¼Ó ȤÀº ·Î±×ÀÎ ÇÒ ¶§¸¶´Ù ¹ß»ýÇÑ´Ù. ÀÌ·¯ÇÑ ÇÁ·Î±×·¥µéÀº ¸ðµÎ ActiveX ±â¼ú·Î ¸¸µé¾îÁ³À¸¸ç, ±¹³» »çÀÌÆ®´Â À¯µ¶ ActiveX¿¡ ´ëÇÑ ÀÇÁ¸ÀÌ ½ÉÇÑ ÆíÀÌ´Ù.

¹Ý¸é ±¸±ÛÀº ¾î¶² ¼­ºñ½º¸¦ ÀÌ¿ëÇÏ´õ¶óµµ ÇÁ·Î±×·¥À» ´Ù¿î·Îµå ¹ÞÀ» Çʿ䰡 ¾ø´Ù. ·Î±ä Çѹø ÇØÁÖ¸é ³¡ÀÌ´Ù. ´Ù¸¥ »çÀÌÆ®µéµµ °á±¹Àº Ajax¸¦ ÀÌ¿ëÇÏ´Â ¹æÇâÀ¸·Î ¿òÁ÷ÀÏ °Å¶ó°í »ý°¢µÈ´Ù.

1.2 AjaxÀÇ ´ÜÁ¡

°³¹ßÀÚ°¡ ½Å°æ½á¾ß ÇÒ°Ô ¸¹´Ù: °³¹ßÀÚ´Â Cross Browsing¿¡ ´ëÇÑ Áö½ÄÀÌ ÇÊ¿äÇÏ´Ù. »ç½Ç W3CÀÇ ±Ç°í¾È¸¸ Àß ÁöÄѳ½´Ù¸é, Å©°Ô ¹®Á¦µÇÁö ¾ÊÀ» °Í °°±âµµÇÏ´Ù. ±×·¯³ª ¾ÐµµÀûÀÎ IE¸¦ »ç¿ëÇϴ ȯ°æ¿¡¼­ MSÀÇ ¿©·¯°¡Áö ºñÇ¥Áؾȿ¡ Àͼ÷ÇÑ °³¹ßÀÚµéÀÌ ¸¹´Ùº¸´Ï ¹®Á¦°¡ µÈ´Ù. ¶ÇÇÑ Ajax¸¦ Áö¿øÇÏÁö ¾ÊÀº ºê¶ó¿ìÀú¿¡ ´ëÇØ¼­µµ Á» ´õ ¼¼½ÉÇÑ °üÂûÀÌ ÇÊ¿äÇØÁø´Ù. ·Î±×ÀÎ °úÁ¤À» Ajax·Î ÇØ³ùÀ» °æ¿ì, w3m, lynx °°Àº ºê¶ó¿ìÀú¿¡¼­´Â ¾Æ¿¹ ·Î±äÁ¶Â÷ ¸øÇÏ´Â »çŰ¡ ¹ß»ýÇÑ´Ù.

ºÏ¸¶Å·ÀÌ ¾î·Æ´Ù : Ajax¸¦ ÀÌ¿ëÇÒ °æ¿ì »õ·Î¿î ÆäÀÌÁö¸¦ ¸¸µéÁö ¾Ê°í Á¤º¸¸¦ Ãâ·ÂÇÏ´Â°Ô °¡´ÉÇØÁø´Ù. À̰æ¿ì ºÏ¸¶Å·¿¡ ¾î·Á¿òÀ» ´À³¥ ¼ö ÀÖ´Ù. ºÏ¸¶Å© ¹öưÀ» ÆäÀÌÁö ¾È¿¡ µðÀÚÀÎ ÇØÁÖ¸é ¹®Á¦¸¦ ÇØ°áÇÒ ¼ö´Â ÀÖÁö¸¸, »ç¿ëÀÚ ÀÔÀå¿¡¼­´Â ÁÁÀº ¹æ¹ýÀÌ ¾Æ´Ï´Ù.

»ó¾÷ÀûÀÎ ¹®Á¦ : ¸¹Àº »çÀÌÆ®µéÀÌ ¹è³Ê±¤°í¸¦ ÅëÇØ¼­ ¼öÀÍÀ» ¾ò°í ÀÖ´Ù. ¹è³Ê±¤°íÀÇ »ý¸íÀº ´Ù¾çÇÑ Á¾·ùÀÇ ±¤°í¸¦ ÆäÀÌÁö ³»¿ëÀÇ ¼º°Ý¿¡ ¸Âµµ·Ï ³ëÃâ½Ã۴µ¥ ÀÖ´Ù. Ajax´Â ÆäÀÌÁö ¸®·Îµå °úÁ¤ÀÌ »ý·«µÉ ¼ö Àִµ¥, ¶§¹®¿¡ ±¤°í°¡ °íÁ¤µÇ°Å³ª ÆäÀÌÁöÀÇ ³»¿ë¿¡ ¸ÂÁö ¾Ê´Â ±¤°í°¡ ³ëÃâµÉ ¼ö ÀÖ´Ù.

º¸¾È¹®Á¦ : AjaxÀÇ XMLHttpRequest´Â GET, POST¸¦ ÀÌ¿ëÇØ¼­ µ¥ÀÌÅ͸¦ ±³È¯ÇÑ´Ù. ¶§¹®¿¡ µ¥ÀÌÅ͸¦ ´©±º°¡ °¡·Îç ¼ö ÀÖ´Ù (ÀÌ ¹®Á¦´Â AjaxÀÇ ¹®Á¦¶ó±â º¸´Ù´Â TCP/IP °¡ °¡Áö´Â ±Ùº»ÀûÀÎ ¹®Á¦¶ó°í º¼ ¼ö ÀÖ´Ù.) °¡Àå ÃÖ¼±ÀÇ ¹æ¹ýÀº SSL¸¦ ÀÌ¿ëÇÏ´Â °ÍÀÌ´Ù.

°Ë»öÀÇ ¾î·Á¿ò : ÇöÀçÀÇ °Ë»ö¿£Áø¿¡ »ç¿ëµÇ´Â ·Îº¿µéÀº hypertextÀÇ link¸¦ ÀÌ¿ëÇØ¼­ ¹®¼­¸¦ crawling ÇÑ´Ù. ¶§¹®¿¡ Ajax¸¦ ÀÌ¿ëÇØ¼­ ÄÁÅÙÃ÷¸¦ Ž»öÇÏ´Â »çÀÌÆ®ÀÇ °æ¿ì °Ë»ö¿£Áø¿¡ ³ëÃâµÇÁö ¾ÊÀ» ¼öµµ ÀÖ´Ù. link±â¹ÝÀÇ °Ë»öµµ °¡´ÉÇϵµ·Ï ÆäÀÌÁö¸¦ µðÀÚÀÎ ÇØ¾ß ÇÒ °ÍÀÌ´Ù. ·Îº¿ÀÌ ´õ ¶È¶ÈÇØ Áö±æ ±â´Ù¸®´Â ¹æ¹ýµµ ÀÖ°Ú´Ù.

2 Ajax ±âÃÊ

±×·³ Ajax¸¦ ½ÇÁ¦·Î ÀÍÇôº¸µµ·Ï ÇÏÀÚ. Ajax´Â javascript·Î Á¦¾îµÇ¸ç, XMLHttpRequest·Î ¸ðµç°Ô ½ÃÀ۵ȴÙ. °¡Àå Áß¿äÇÑ °´Ã¼¶ó°í ÇÒ ¼ö ÀÖ´Ù.

2.1 XMLHttpRequest °´Ã¼¿Í »ý¼º

XMLHttpRequest °´Ã¼´Â À̸§¿¡¼­ ´À³¥ ¼ö ÀÖµíÀÌ, XML°ú HTTP ÇÁ·ÎÅäÄÝÀ» ÀÌ¿ëÇØ¼­ ¼­¹ö¿Í Åë½ÅÇÏ´Â °´Ã¼ÀÌ´Ù. XMLHttpRequest °´Ã¼´Â ´ÙÀ½°ú °°ÀÌ »ý¼ºÇÒ ¼ö ÀÖ´Ù.
<script language="javascript" type="text/javascript"> 
 
var xmlHttp = new XMLHttpRequest(); 
 
</script> 
 

ÀϹÝÀûÀ¸·Î À¥¿¡¼­ ¼­¹öÃø¿¡ °á°ú¸¦ ¿äûÇϱâ À§Çؼ­´Â POST¹æ½ÄÀ» ÀÌ¿ëÇØ¼­ µ¥ÀÌÅ͸¦ Àü¼ÛÇÏ°Ô µÈ´Ù. ÀÏ¹Ý µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ÇÀ̶ó¸é È­¸éÀº ±×´ë·Î ÀÖ°í, ³»ºÎÀûÀ¸·Î µ¥ÀÌÅ͸¸ ¿òÁ÷À̰ÚÁö¸¸ À¥ÀÇ °æ¿ì ÆäÀÌÁö ÀÚü¸¦ À̵¿ÇÏ°Ô µÈ´Ù. ±×·¯´Ùº¸´Ï ½ºÅ©¸°ÀÌ ±ôºýµÇ°Å³ª, Á¤ÁöµÇ°Å³ª ÇÏ´Â ÀÏÀÌ ¹ß»ýÇÑ´Ù.

XMLHttpRequest °´Ã¼´Â µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ÇÀÇ ±×°Íó·³, È­¸é(ÆäÀÌÁö)ÀÚü¸¦ ÀüȯÇÏÁö ¾Ê°í ³»ºÎÀûÀ¸·Î µ¥ÀÌÅ͸¸ Àü¼ÛÇϸç, À̰ÍÀº Ŭ¶óÀÌ¾ðÆ®°¡ ´«Ä¡ äÁö ¸øÇÏ°Ô ÀÌ·ç¾îÁø´Ù. ±×·¡¼­ È­¸éÀÌ ¸®ÇÁ·¹½¬ ȤÀº Á¤ÁöµÇ°Å³ª ÇÏ´Â ÀÏ ¾øÀÌ, ¸¶Ä¡ µ¥½ºÅ©Å¾ ¾ÖÇø®ÄÉÀ̼ÇÀ» »ç¿ëÇÏ´Â °Íó·³, ¿äû°ú ÀÀ´äÀÌ ÀÌ·ç¾îÁø´Ù. À¥°ú µ¥½ºÅ©Å¾ ¸ðµÎÀÇ ÀåÁ¡À» °¡Áø À¥ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ¸¸µé¾îÁö´Â °ÍÀÌ´Ù.

ÀÏ´Ü XMLHttpRequest¸¦ Á¦¾îÇÏ°Ô µÇ¾ú´Ù¸é, ³ª¸ÓÁö´Â ÀϹÝÀûÀÎ javascript±â¼úÀÌ´Ù. javascript¸¦ ÀÌ¿ëÇØ¼­ ÀÀ´ä°ªÀ» ƯÁ¤ form¿¡ Ãâ·ÂÇϰųª, tableÀ» Á¦¾îÇÏ´Â µîÀÇ ÀÏÀ» ÇÏ°Ô µÈ´Ù.

¿¹¸¦ µé¾î »ç¿ëÀÚÀÇ Á¤º¸¸¦ ÀԷ¹޴ ÆûÀ¸·Î ºÎÅÍ ÀԷ°ªÀ» ¾ò¾î¿À±æ ¿øÇÑ´Ù¸é, ¾Æ·¡¿Í °°ÀÌ ÇÏ¸é µÈ´Ù.
var name = document.getElementById("name").value; 
var addr = document.getElementById("addr").value; 
 

2.2 Ajax¿¡¼­ÀÇ ¿äû°ú ÀÀ´ä

Ajax´Â À¥¿¡¼­ »ç¿ëÇÏ´Â ¿äû°ú ÀÀ´ä°ú´Â Â÷À̰¡ ¸¹À¸¸ç, ÀϹÝÀûÀÎ C/S ÇÁ·Î±×·¥¿¡¼­ »ç¿ëµÇ´Â ³×Æ®¿öÅ© Åë½Å°ú ºñ½ÁÇÑ Ãø¸éÀÌ ÀÖ´Ù. À̰ÍÀ» ´ÜÁö javascript¸¦ ÅëÇØ¼­ Á¦¾îÇÑ´Ù´Â Â÷À̰¡ ÀÖÀ» »ÓÀÌ´Ù. (¹°·Ð ³»ºÎÀûÀ¸·Ð ´Ù¸¥ Â÷À̵éÀÌ ÀÖ°ÚÁö¸¸, ¿ì¼±Àº ÀÌ·¸°Ô ÀÌÇØÇÏÀÚ)

¾Õ¿¡¼­ XMLHttpRequest°´Ã¼¸¦ »ý¼ºÇÏ´Â ¹æ¹ýÀ» ¾Ë¾ÆºÃÀ¸´Ï, ½ÇÁ¦ ¿äû°ú ÀÀ´äÀÌ ¾î¶»°Ô ÀÌ·ç¾îÁö´Â Áö¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸µµ·Ï ÇÏÀÚ. ¿äû°ú ÀÀ´äÀ» È®ÀÎÇϱâ À§Çؼ­ ´ÙÀ½°ú °°Àº ÆäÀÌÁö¸¦ ÁغñÇϵµ·Ï ÇϰڴÙ.
<html> 
    <body> 
        <input type=text name=a size=4> + <input type=text name=b size=4> =  
        <input type=text name=result size=5>  
    </body> 
</html> 
 

2.2.1 ¿äûº¸³»±â

  1. ¸ÕÀú ¼­¹ö¿¡ ¿¬°áÀ» ÇØ¾ßÇÑ´Ù. ¿¬°áÀ» À§Çؼ­ open ¸Þ¼­µå¸¦ »ç¿ëÇÑ´Ù.
  2. Ajax´Â ÄݹéÇÔ¼ö¸¦ ÀÌ¿ëÇØ¼­ ºñµ¿±â Åë½ÅÀ» ÇÑ´Ù. onreadystatechange¿¡ ÄݹéÇÔ¼ö¸¦ µî·ÏÇÑ´Ù.
  3. ¸¶Áö¸·À¸·Î send¸Þ¼­µå¸¦ ÀÌ¿ëÇØ¼­ ¿äûÀ» º¸³½´Ù.
  4. ¿äûÀ» ¹ÞÀº ¼­¹ö·Î ºÎÅÍ ÀÀ´äÀÌ ¿À¸é, µî·ÏµÈ ÄݹéÇÔ¼ö°¡ È£ÃâµÇ¾î¼­ ÀÀ´äÀ» ó¸®ÇÏ°Ô µÈ´Ù.
function Request() 
{ 
    var a = document.getElementByld("a").value; 
    var b = document.getElementByld("b").value; 
    if ((a == null) || (b == null)) return; 
 
    var url = "ajaxsum.php?a="+escape(a)+"&b="+escape(b); 
 
    // ¼­¹ö¿¡ ¿¬°áÇÑ´Ù. 
    xmlHttp.open("GET", url, true); 
 
    // ÄݹéÇÔ¼öÀÇ µî·Ï 
    xmlHttp.onreadystatechange = updatePage; 
 
    // ¿äûÀ» º¸³½´Ù. 
    xmlHttp.send(null); 
} 
 

2.2.2 ¿äûó¸®

ÀÌÁ¦ ¿äû󸮸¦ À§ÇÑ updatePageÄݹéÇÔ¼ö¿¡ ´ëÇØ¼­ ¾Ë¾Æº¸ÀÚ.
function updatePage () 
{ 
    if(xmlHttp.readyState == 4) 
    { 
        if (xmlHttp.status == 200) 
        { 
            var response = xmlHttp.responseText; 
            document.getElementById("result").value = response; 
        } 
                else if (xmlHttp.status == 404) 
                { 
                        alert("Page Not Found"); 
                } 
        else 
        { 
            alert("Server Error!"); 
        } 
    } 
} 
 
¸ðµç Á¦´ë·ÎµÈ ¾ÖÇø®ÄÉÀ̼ÇÀÌ ±×·¸µíÀÌ Ajax¿¡¼­µµ ¿ª½Ã ¹ß»ýÇÒÁö ¸ð¸£´Â ¿¡·¯¸¦ ó¸®Çϱâ À§ÇÑ ¹æ¹ýÀ» °¡Áö°í ÀÖ´Ù.

readyState¸¦ ÀÌ¿ëÇØ¼­ ¼­¹öÀÇ ÁøÇà»óŸ¦ ¾Ë ¼ö ÀÖ´Ù. readyState°¡ 4¶ó¸é ¸ðµç ÀÛ¾÷ÀÌ ³¡³µÀ½À» ÀǹÌÇÑ´Ù.

status¸¦ ÀÌ¿ëÇØ¼­ ¼­¹öÀÇ »óŸ¦ ¾Ë ¼ö ÀÖ´Ù. »ç¿ëµÇ´Â ÄÚµå´Â HTTPÀÇ »óŵéÀ» ³ªÅ¸³»´Â ÄÚµå´Ù. 200À̶ó¸é Á¤»óó¸®, 404¶ó¸é ÆäÀÌÁö Á¸ÀçÇÏÁö ¾ÊÀ½ÀÇ »óŸ¦ ³ªÅ¸³½´Ù.

responseText¸¦ ÀÌ¿ëÇØ¼­ ÀоîµéÀÎ µ¥ÀÌÅ͸¦ ¾ò¾î¿Ã ¼ö ÀÖ´Ù.

2.2.3 ½Ç Å×½ºÆ®

´ÙÀ½Àº Ajax¸¦ ÀÌ¿ëÇØ¼­ µ¡¼À °è»ê°á°ú¸¦ º¸¿©ÁÖ´Â ¿ÏÀüÇÑ ÄÚµå´Ù.
<html> 
<head> 
<script language="JavaScript" type="text/javascript"> 
var xmlHttp=false; 
try 
{ 
    xmlHttp = new XMLHttpRequest(); 
} catch (failed) 
{ 
    xmlHttp = false; 
} 
 
if (!xmlHttp) 
{ 
    alert("Error initializing XMLHttpRequest!"); 
    exit; 
} 
 
function Request() 
{ 
    var a = document.getElementById("a").value; 
    var b = document.getElementById("b").value; 
 
    if ((a == null) || (b == null)) return; 
 
    var url = "/ajaxsum.php?a="+escape(a)+"&b="+escape(b); 
 
    xmlHttp.open("GET", url, true); 
    xmlHttp.onreadystatechange = updatePage; 
 
    xmlHttp.send(null); 
} 
 
function updatePage() 
{ 
    if(xmlHttp.readyState == 4) 
    { 
        if (xmlHttp.status == 200) 
        { 
            var response = xmlHttp.responseText; 
            document.getElementById("result").value = response; 
        } 
        else if (xmlHttp.status == 404) 
        { 
            alert("Page Not Found"); 
        } 
        else 
        { 
            alert("Server Error!"); 
        } 
    } 
} 
</script> 
</head> 
    <body> 
        <form> 
        <input type=text id=a name=a size=4> + <input type=text id=b name=b size=4> = 
        <input type=text id=result name=result size=5> 
        <!--<a href="" onClick=Request(this)>Test</a>--> 
        <input type=button onclick=Request(this) value=Test> 
        </form> 
    </body> 
</html> 
 


´ÙÀ½Àº ¼­¹öÃø ÇÁ·Î±×·¥À¸·Î php·Î ÀÛ¼ºµÇ¾ú´Ù. ¾ÆÁÖ °£´ÜÇÏ´Ù
echo $a + $b; 
 

ÇÊÀÚÀÇ »çÀÌÆ®¿¡ Àû¿ëµÈ ¿¹´Ù.
+ =

2.3 ºê¶ó¿ìÀú ȣȯ¼º

ºñµ¿±â Åë½ÅÀ» À§ÇÑ Ajax °´Ã¼¸¦ »ý¼º½ÃŰ´Â ¹æ¹ýÀº IE Firefox°¡ ¼­·Î ´Ù¸£´Ù. ±×·¯¹Ç·Î Ajax ÀÀ¿ëÀ» ¸¸µé¶§´Â °¢ ºê¶ó¿ìÀú¿¡ ¸Â´Â Ajax ½ÇÇà¹æ¹ýÀ» ¼±ÅÃÇÒ ¼ö ÀÖµµ·Ï ÀåÄ¡¸¦ ¸¶·ÃÇØµÎ¾î¾ß ÇÑ´Ù. ´ÙÀ½°ú °°ÀÌ °£´ÜÇϰÔ, ºê¶ó¿ìÀú°£ ȣȯ°¡´ÉÇÑ Äڵ带 ÀÛ¼ºÇÒ ¼ö ÀÖ´Ù.
var xmlHttp=false; 
if (window.XMLHttpRequest) 
{ 
  xmlHttp = new XMLHttpRequest(); 
} 
else if (window.ActiveXObject) 
{ 
  xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
 
if (!xmlHttp) 
{ 
  alert("Error initializing XMLHttpRequest!"); 
  exit; 
} 
 


2.4 XMLHttpRequest IDL

XMLHttpRequest°´Ã¼¸¦ Interface Definition Language Çü½ÄÀ¸·Î ³ªÅ¸³»º¸¾Ò´Ù.
interface XMLHttpRequest { 
           attribute EventListener   onreadystatechange; 
  readonly attribute unsigned short  readyState; 
  void               open(in DOMString method, in DOMString url); 
  void               open(in DOMString method, in DOMString url, in boolean async); 
  void               open(in DOMString method, in DOMString url, in boolean async, in DOMString user); 
  void               open(in DOMString method, in DOMString url, in boolean async, in DOMString user, in DOMString password); 
  void               setRequestHeader(in DOMString header, in DOMString value); 
  void               send(); 
  void               send(in DOMString data); 
  void               send(in Document data); 
  void               abort(); 
  DOMString          getAllResponseHeaders(); 
  DOMString          getResponseHeader(in DOMString header); 
  readonly attribute DOMString       responseText; 
  readonly attribute Document        responseXML; 
  readonly attribute unsigned short  status; 
  readonly attribute DOMString       statusText; 
}; 
 
<!> ÀÚ¼¼ÇÑ ³»¿ëÀº [http]w3c XMLHttpRequest ¹®¼­ ¸¦ Âü°íÇϱ⠹ٶõ´Ù.

ÀÌ ¹®¼­°¡ µµ¿òÀÌ µÇ¾ú³ª¿ä ?

¾ÆÁÖ ¸¹ÀÌ 34 (41.46 %)
¸¹ÀÌ 13 (15.85 %)
±×·°Àú·° 7 (8.54 %)
º°·Î 4 (4.88 %)
ÀüÇô 24 (29.27 %)
ÃÑ ÅõÇ¥82

EmailÀ» ±âÀÔÇϸé, ´ñ±ÛÀÌ ¸ÞÀÏ·Î Àü´ÞµË´Ï´Ù.