¡i²Ä0105´Á2006/10/10¡j

¥»¶g¥DÃD

³Ì·s®ø®§

¡@
  • ¡u Notes 8¬ÛÃö°T®§¡v

Notes 8¬ÛÃö¸ê°T­º­¶:(¥Ø«e¥N¸¹¬°:"Hannover"):

http://www-142.ibm.com/software/sw-lotus/products/product4.nsf/wdocs/hannover


Notes 8¤ä´©Open Document Format (ODF)¤å¥ó®æ¦¡:

http://www-142.ibm.com/software/sw-lotus/products/product4.nsf/wdocs/productivitytools


Designing "Hannover" - read the blog:

http://www-03.ibm.com/developerworks/blogs/page/marybeth
¡@

¤U¸üDemo¸ê®Æ:

http://demos.dfw.ibm.com/on_demand/Demo/IBM_Demo_Hannover_The_Future_of_Lotus_Notes-May06.html?S=index

Top

¤å³¹¤À¨É

¡@

´x´¤ Ajax¡A²Ä2³¡¤À: ¨Ï¥Î JavaScript ©M Ajax µo¥X«D¦P¨B½Ð¨D

¡@

­ì¤åºô§}: http://www-128.ibm.com/developerworks/xml/library/wa-ajaxintro2/

¡@

¡@

¦b Web ½Ð¨D¤¤¨Ï¥Î XMLHttpRequest

¯Å§O: ¤¤¯Å

Brett McLaughlin (brett@newInstance.com), §@®a¡A½s¿è, O'Reilly Media Inc.

2006 ¦~ 2 ¤ë 16 ¤é

¦h¼Æ Web À³¥Îµ{¦¡³£¨Ï¥Î½Ð¨D/¦^À³¼Ò«¬±q¦øªA¾¹¤WÀò±o§¹¾ãªº HTML ­¶­±¡C±`±`¬O«ö¤U¤@­Ó«ö¶s¡Aµ¥«Ý¦øªA¾¹¦^À³¡A¦A«ö¤U¥t¤@­Ó«ö¶s¡AµM«á¦Aµ¥«Ý¡A³o¼Ë¤@­Ó¤Ï´_ªº¹Lµ{¡C¦³¤F Ajax ©M XMLHttpRequest ª«¥ó¡A´N¥i¥H¨Ï¥Î¤£¥²Åý¨Ï¥ÎªÌµ¥«Ý¦øªA¾¹¦^À³ªº½Ð¨D/¦^À³¼Ò«¬¤F¡C¥»¤å¤¤¡ABrett McLaughlin ¤¶²Ð¤F¦p¦ó«Ø¥ß¯à°÷¾AÀ³¤£¦PÂsÄý¾¹ªº XMLHttpRequest ¹ê¨Ò¡A«Ø¥ß©Mµo°e½Ð¨D¡A¨Ã¦^À³¦øªA¾¹¡C

¥»¨t¦Cªº¤W¤@´Á¤å³¹¡]½Ð°Ñ¾\ °Ñ¦Ò¸ê®Æ ¤¤ªº³sµ²¡^¡A§Ú­Ì¤¶²Ð¤F Ajax À³¥Îµ{¦¡¡A¦Ò¹î¤F±À°Ê Ajax À³¥Îµ{¦¡ªº°ò¥»·§©À¡C¨ä¤¤ªº®Ö¤ß¬O«Ü¦h±z¥i¯à¤w¸gÁA¸Ñªº§Þ³N¡GJavaScript¡BHTML ©M XHTML¡B¤@ÂI°ÊºA HTML ¥H¤Î DOM¡]¤å¥óª«¥ó¼Ò«¬¡^¡C¥»¤å±N©ñ¤j¨ä¤¤ªº¤@ÂI¡A§â¥Ø¥ú©ñ¨ì¨ãÅ骺 Ajax ²Ó¸`¤W¡C

¥»¤å¤¤¡A±z±N¶}©l±µÄ²³Ì°ò¥»©M°ò¦©Êªº¦³Ãö Ajax ªº¥þ³¡ª«¥ó©Mµ{¦¡¶}µo¤èªk¡GXMLHttpRequest ¹ï¶H¡C¸Óª«¥ó¹ê»Ú¤W¶È¶È¬O¤@­Ó¸ó¶V©Ò¦³ Ajax À³¥Îµ{¦¡ªº¤½¦@½uµ{¡A±z¥i¯à¤w¸g¹w®Æ¨ì¡A¥u¦³¹ý©³²z¸Ñ¸Óª«¥ó¤~¯à¥R¤Àµo´§µ{¦¡¶}µoªº¼ç¤O¡C¨Æ¹ê¤W¡A¦³®É±z·|µo²{¡A­n¥¿½T¦a¨Ï¥Î XMLHttpRequest¡AÅãµM¤£¯à ¨Ï¥Î XMLHttpRequest¡C³o¨ì©³¬O«ç»ò¦^¨Æ©O¡H

Web 2.0 ¤@¿h

¦b²`¤J¬ã¨sµ{¦¡½X¤§«e­º¥ý¬Ý¬Ý³ÌªñªºÆ[ÂI ¡X¡X ¤@©w­n¤Q¤À²M·¡ Web 2.0 ³o­Ó·§©À¡CÅ¥¨ì Web 2.0 ³o­Óµüªº®É­Ô¡AÀ³¸Ó­º¥ý°Ý¤@°Ý ¡§Web 1.0 ¬O¤°»ò¡H¡¨ ÁöµM«Ü¤ÖÅ¥¤H´£¨ì Web 1.0¡A¹ê»Ú¤W¥¦«üªº´N¬O¨ã¦³§¹¥þ¤£¦Pªº½Ð¨D©M¦^À³¼Ò«¬ªº¶Ç²Î Web¡C¤ñ¦p¡A¨ì Amazon.com ºô¯¸¤W«ö¤U¤@­Ó«ö¶s©ÎªÌ¿é¤J·j´M¶µ¥Ø¡C´N·|¹ï¦øªA¾¹µo°e¤@­Ó½Ð¨D¡AµM«á¦^À³¦Aªð¦^¨ìÂsÄý¾¹¡C¸Ó½Ð¨D¤£¶È¶È¬O¹Ï®Ñ©M®Ñ¥Ø¦Cªí¡A¦Ó¬O¥t¤@­Ó§¹¾ãªº HTML ­¶­±¡C¦]¦¹·í Web ÂsÄý¾¹¥Î·sªº HTML ­¶­±­«Ã¸®É¡A¥i¯à·|¬Ý¨ì°{Ã{©Î§Ý°Ê¡C¨Æ¹ê¤W¡A³z¹L¬Ý¨ìªº¨C­Ó·s­¶­±¥i¥H²M´·¦a¬Ý¨ì½Ð¨D©M¦^À³¡C

Web 2.0¡]¦b«Ü¤jµ{«×¤W¡^®ø°£¤F³oºØ¬Ý±o¨£ªº©¹´_¤¬°Ê¡C¤ñ¦p¦s¨ú Google Maps ©Î Flickr ³o¼Ëªº¯¸ÂI¡]¨ì³o¨Ç¤ä´© Web 2.0 ©M Ajax ¯¸ÂIªº³sµ²½Ð°Ñ¾\ °Ñ¦Ò¸ê®Æ¡^¡C¤ñ¦p¦b Google Maps ¤W¡A±z¥i¥H©ì°Ê¦a¹Ï¡A©ñ¤j©MÁY¤p¡A¥u¦³«Ü¤Öªº­«Ã¸¾Þ§@¡C·íµM³oùؤ´µM¦³½Ð¨D©M¦^À³¡A¥u¤£¹L³£Âèì¤F¹õ«á¡C§@¬°¨Ï¥ÎªÌ¡AÅéÅç§ó¥[µÎ¾A¡A·Pı«Ü¹³®à­±À³¥Îµ{¦¡¡C³oºØ·sªº·P¨ü©M¨å¨Ò´N¬O·í¦³¤H´£¨ì Web 2.0 ®É±z©ÒÅé·|¨ìªº¡C

»Ý­nÃö¤ßªº¬O¦p¦ó¨Ï³o¨Ç·sªº¤¬°Ê¦¨¬°¥i¯à¡CÅãµM¡A¤´µM»Ý­nµo¥X½Ð¨D©M±µ¦¬¦^À³¡A¦ý¥¿¬O°w¹ï¨C¦¸½Ð¨D/¦^À³¤¬°Êªº HTML ­«Ã¸³y¦¨¤F½wºC¡B²Â©åªº Web ¤¬°Êªº·P¨ü¡C¦]¦¹«Ü²M·¡¡A§Ú­Ì»Ý­n¤@ºØ¤èªk¨Ïµo°eªº½Ð¨D©M±µ¦¬ªº¦^À³¥u ¥]§t»Ý­nªº¸ê®Æ¦Ó¤£¬O¾ã­Ó HTML ­¶­±¡C°ß¤@»Ý­nÀò±o¾ã­Ó·s HTML ­¶­±ªº®É­Ô´N¬O§Æ±æ¨Ï¥ÎªÌ¬Ý¨ì ·s­¶­±ªº®É­Ô¡C

¦ý¦h¼Æ¤¬°Ê³£¬O¦b¤w¦³­¶­±¤W¼W¥[²Ó¸`¡B­×§ï¥DÅé¤å¦r©ÎªÌÂл\­ì¦³¸ê®Æ¡C³o¨Ç±¡ªp¤U¡AAjax ©M Web 2.0 ¤èªk¤¹³\¦b¤£§ó·s¾ã­Ó HTML ­¶­±ªº±¡ªp¤Uµo°e©M±µ¦¬¸ê®Æ¡C¹ï©ó¨º¨Ç¸g±`¤Wºôªº¤H¡A³oºØ¯à¤O¥i¥HÅý±zªºÀ³¥Îµ{¦¡·Pı§ó§Ö¡B¦^À³§ó¤Î®É¡AÅý¥L­Ì¤£®É¦a¥úÅU±zªººô¯¸¡C

Top

XMLHttpRequest ²¤¶

­n¯u¥¿¹ê²{³oºØµºÄRªº©_¸ñ¡A¥²¶·«D±`¼ô±x¤@­Ó JavaScript ª«¥ó¡A§Y XMLHttpRequest¡C³o­Ó¤p¤pªºª«¥ó¹ê»Ú¤W¤w¸g¦b´XºØÂsÄý¾¹¤¤¦s¦b¤@¬q®É¶¡¤F¡A¥¦¬O¥»±MÄæ¤µ«á´X­Ó¤ë¤¤­n¤¶²Ðªº Web 2.0¡BAjax ©M¤j³¡¤À¨ä¥L¤º®eªº®Ö¤ß¡C¬°¤FÅý±z§Ö³t¦aÁA¸Ñ¥¦¡A¤U­±µ¹¥X±N­n¥Î©ó¸Óª«¥óªº«Ü¤Öªº´X­Ó ¤èªk©MÄݩʡC

  • open()¡G«Ø¥ß¨ì¦øªA¾¹ªº·s½Ð¨D¡C
  • send()¡G¦V¦øªA¾¹µo°e½Ð¨D¡C
  • abort()¡G°h¥X¥Ø«e½Ð¨D¡C
  • readyState¡G´£¨Ñ¥Ø«e HTML ªº´Nºüª¬ºA¡C
  • responseText¡G¦øªA¾¹ªð¦^ªº½Ð¨D¦^À³¤å¦r¡C

¦pªG¤£ÁA¸Ñ³o¨Ç¡]©ÎªÌ¨ä¤¤ªº¥ô¦ó ¤@­Ó¡^¡A±z¤]¤£¥Î¾á¤ß¡A«á­±´X½g¤å³¹¤¤§Ú­Ì±N¤¶²Ð¨C­Ó¤èªk©MÄݩʡC²{¦bÀ³¸Ó ÁA¸Ñªº¬O¡A©ú½T¥Î XMLHttpRequest °µ¤°»ò¡C­nª`·N³o¨Ç¤èªk©MÄݩʳ£»Pµo°e½Ð¨D¤Î³B²z¦^À³¦³Ãö¡C¨Æ¹ê¤W¡A¦pªG¬Ý¨ì XMLHttpRequest ªº©Ò¦³¤èªk©MÄݩʡA´N·|µo²{¥¦­Ì³£ »P«D±`²³æªº½Ð¨D/¦^À³¼Ò«¬¦³Ãö¡CÅãµM¡A§Ú­Ì¤£·|¹J¨ì¯S§O·sªº GUI ª«¥ó©ÎªÌ«Ø¥ß¨Ï¥ÎªÌ¤¬°Êªº¬YºØ¶W·¥¯«¯µªº¤èªk¡A§Ú­Ì±N¨Ï¥Î«D±`²³æªº½Ð¨D©M«D±`²³æªº¦^À³¡CÅ¥°_¨Ó¦ü¥G¨S¦³¦h¤Ö§l¤Þ¤O¡A¦ý¬O¥Î¦n¸Óª«¥ó¥i¥H¹ý©³§ïÅܱzªºÀ³¥Îµ{¦¡¡C

²³æªº new

­º¥ý»Ý­n«Ø¥ß¤@­Ó·sÅܼƨýᵹ¥¦¤@­Ó XMLHttpRequest ª«¥ó¹ê¨Ò¡C³o¦b JavaScript ¤¤«Ü²³æ¡A¥u­n¹ï¸Óª«¥ó¦W¨Ï¥Î new ÃöÁä¦r§Y¥i¡A¦p ²M³æ 1 ©Ò¥Ü¡C



²M³æ 1. «Ø¥ß·sªº XMLHttpRequest ª«¥ó 

¡@

 <script language="javascript" type="text/javascript">

var request = new XMLHttpRequest();

</script>

 ¤£Ãø§a¡H°O¦í¡AJavaScript ¤£­n¨D«ü©wÅܼÆÃþ«¬¡A¦]¦¹¤£»Ý­n¹³ ²M³æ 2 ¨º¼Ë°µ¡]¦b Java »y¨¥¤¤¥i¯à»Ý­n³o¼Ë¡^¡C

²M³æ 2. «Ø¥ß XMLHttpRequest ªº Java °°µ{¦¡½X

 XMLHttpRequest request = new XMLHttpRequest();

¦]¦¹¦b JavaScript ¤¤¥Î var «Ø¥ß¤@­ÓÅܼơAµ¹¥¦¤@­Ó¦W¦r¡]¦p ¡§request¡¨¡^¡AµM«á½áµ¹¥¦¤@­Ó·sªº XMLHttpRequest ¹ê¨Ò¡C¦¹«á´N¥i¥H¦b¨ç¼Æ¤¤¨Ï¥Î¸Óª«¥ó¤F¡C

¡@

¿ù»~³B²z

¦b¹ê»Ú¤W¦UºØ¨Æ±¡³£¥i¯à¥X¿ù¡A¦Ó¤W­±ªºµ{¦¡½X¨S¦³´£¨Ñ¥ô¦ó¿ù»~³B²z¡C¸û¦nªº¿ìªk¬O«Ø¥ß¸Óª«¥ó¡A¨Ã¦b¥X²{°ÝÃD®ÉÀu¶®¦a°h¥X¡C¤ñ¦p¡A¥ô¦ó¸û¦­ªºÂsÄý¾¹¡]¤£½×±z¬O§_¬Û«H¡A¤´µM¦³¤H¦b¨Ï¥Î¦Ñª©¥»ªº Netscape Navigator¡^³£¤£¤ä´© XMLHttpRequest¡A±z»Ý­nÅý³o¨Ç¨Ï¥ÎªÌª¾¹D¦³¨Ç¦a¤è¥X¤F°ÝÃD¡C²M³æ 3 »¡©ú¦p¦ó«Ø¥ß¸Óª«¥ó¡A¥H«K¦b¥X²{°ÝÃDªº®É­Ôµo¥X JavaScript ĵ§i¡C

Top


²M³æ 3. «Ø¥ß¨ã¦³¿ù»~³B²z¯à¤Oªº XMLHttpRequest

 <script language="javascript" type="text/javascript">

var request = false;

try {

  request = new XMLHttpRequest();

} catch (failed) {

  request = false;

}

if (!request)

  alert("Error initializing XMLHttpRequest!");

</script>

 

¤@©w­n²z¸Ñ³o¨Ç¨BÆJ¡G

  1. «Ø¥ß¤@­Ó·sÅÜ¼Æ request ¨Ã½á¤©­È false¡C«á­±±N¨Ï¥Î false §@¬°§P©w±ø¥ó¡A¥¦ªí¥ÜÁÙ¨S¦³«Ø¥ß XMLHttpRequest ¹ï¶H¡C
  2. ¼W¥[ try/catch ¶ô¡G
    1. ¹Á¸Õ«Ø¥ß XMLHttpRequest ¹ï¶H¡C
    2. ¦pªG¥¢±Ñ¡]catch (failed)¡^«h«OÃÒ request ªº­È¤´µM¬° false¡C
  3. Àˬd request ¬O§_¤´¬° false¡]¦pªG¤@¤Á¥¿±`´N¤£·|¬O false¡^¡C
  4. ¦pªG¥X²{°ÝÃD¡]request ¬O false¡^«h¨Ï¥Î JavaScript ĵ§i³qª¾¨Ï¥ÎªÌ¥X²{¤F°ÝÃD¡C

µ{¦¡½X«D±`²³æ¡A¹ï¤j¦h¼Æ JavaScript ©M Web ¶}µo¤H­û¨Ó»¡¡A¯u¥¿²z¸Ñ¥¦­n¤ñŪ¼gµ{¦¡½Xªá§óªøªº®É¶¡¡C²{¦b¤w¸g±o¨ì¤F¤@¬q±a¦³¿ù»~Àˬdªº XMLHttpRequest ª«¥ó«Ø¥ßµ{¦¡½X¡AÁÙ¥i¥H§i¶D±z­þ¨à¥X¤F°ÝÃD¡C

À³¥I Microsoft

¬Ý°_¨Ó¦ü¥G¤@¤Á¨}¦n¡A¦Ü¤Ö¦b¥Î Internet Explorer ¸ÕÅç³o¨Çµ{¦¡½X¤§«e¬O³o¼Ëªº¡C¦pªG³o¼Ë¸ÕÅ窺¸Ü¡A´N·|¬Ý¨ì ¹Ï 1 ©Ò¥ÜªºÁV¿|±¡§Î¡C



¹Ï 1. Internet Explorer ³ø§i¿ù»~

 

Microsoft °Ñ»P¤F¶Ü¡H
Ãö©ó Ajax ©M Microsoft ¹ï¸Ó»â°ì¤£Â_¼Wªøªº¿³½ì©M°Ñ»P¤w¸g¦³«Ü¦h¤å³¹¶i¦æ¤F¤¶²Ð¡C¨Æ¹ê¤W¡A¾Ú»¡ Microsoft ³Ì·sª©¥»ªº Internet Explorer ¡X¡X version 7.0¡A±N¦b 2006 ¦~¤U¥b¦~±À¥X ¡X¡X ±N¶}©lª½±µ¤ä´© XMLHttpRequest¡AÅý±z¨Ï¥Î new ÃöÁä¦r¥N´À©Ò¦³ªº Msxml2.XMLHTTP «Ø¥ßµ{¦¡½X¡C¦ý¤£­n¤Ó¿E°Ê¡A¤´µM»Ý­n¤ä´©ÂªºÂsÄý¾¹¡A¦]¦¹¸óÂsÄý¾¹µ{¦¡½X¤£·|«Ü§Ö®ø¥¢¡C

Top

ÅãµM¦³¤°»ò¦a¤è¤£¹ï«l¡A¦Ó Internet Explorer «ÜÃø»¡¬O¤@ºØ¹L®ÉªºÂsÄý¾¹¡A¦]¬°¥þ¥@¬É¦³ 70% ¦b¨Ï¥Î Internet Explorer¡C´«¥y¸Ü»¡¡A¦pªG¤£¤ä´© Microsoft ©M Internet Explorer ´N¤£·|¨ü¨ì Web ¥@¬ÉªºÅwªï¡I¦]¦¹§Ú­Ì»Ý­n±Ä¥Î¤£¦Pªº¤èªk³B²z Microsoft ÂsÄý¾¹¡C

¸gÅçÃÒµo²{ Microsoft ¤ä´© Ajax¡A¦ý¬O¨ä XMLHttpRequest ª©¥»¦³¤£¦PªººÙ©I¡C¨Æ¹ê¤W¡A¥¦±N¨äºÙ¬°´XºØ ¤£¦PªºªF¦è¡C¦pªG¨Ï¥Î¸û·sª©¥»ªº Internet Explorer¡A«h»Ý­n¨Ï¥Îª«¥ó Msxml2.XMLHTTP¡A¦Ó¸û¦Ñª©¥»ªº Internet Explorer «h¨Ï¥Î Microsoft.XMLHTTP¡C§Ú­Ì»Ý­n¤ä´©³o¨âºØª«¥óÃþ«¬¡]¦P®ÉÁÙ­n¤ä´©«D Microsoft ÂsÄý¾¹¡^¡C½Ð¬Ý¬Ý ²M³æ 4¡A¥¦¦b«e­zµ{¦¡½Xªº°ò¦¤W¼W¥[¤F¹ï Microsoft ªº¤ä´©¡C



²M³æ 4. ¼W¥[¹ï Microsoft ÂsÄý¾¹ªº¤ä´©

 <script language="javascript" type="text/javascript">

var request = false;

try {

  request = new XMLHttpRequest();

} catch (trymicrosoft) {

  try {

    request = new ActiveXObject("Msxml2.XMLHTTP");

  } catch (othermicrosoft) {

    try {

      request = new ActiveXObject("Microsoft.XMLHTTP");

    } catch (failed) {

      request = false;

    }

  }

}

if (!request)

  alert("Error initializing XMLHttpRequest!");

</script>

 

«Ü®e©ö³Q³o¨Çªá¬A©·°g¦í¤F²´·ú¡A¦]¦¹¤U­±¤À§O¤¶²Ð¨C¤@¨B¡G

  1. «Ø¥ß¤@­Ó·sÅÜ¼Æ request ¨Ã½á­È false¡C¨Ï¥Î false §@¬°§PÂ_±ø¥ó¡A¥¦ªí¥ÜÁÙ¨S¦³«Ø¥ß XMLHttpRequest ¹ï¶H¡C
  2. ¼W¥[ try/catch ¶ô¡G
    1. ¹Á¸Õ«Ø¥ß XMLHttpRequest ¹ï¶H¡C
    2. ¦pªG¥¢±Ñ¡]catch (trymicrosoft)¡^¡G
      1. ¹Á¸Õ¨Ï¥Î¸û·sª©¥»ªº Microsoft ÂsÄý¾¹«Ø¥ß Microsoft ¬Û®eªº¹ï¶H¡]Msxml2.XMLHTTP¡^¡C
      2. ¦pªG¥¢±Ñ¡]catch (othermicrosoft)¡^¹Á¸Õ¨Ï¥Î¸û¦Ñª©¥»ªº Microsoft ÂsÄý¾¹«Ø¥ß Microsoft ¬Û®eªº¹ï¶H¡]Microsoft.XMLHTTP¡^¡C
    3. ¦pªG¥¢±Ñ¡]catch (failed)¡^«h«OÃÒ request ªº­È¤´µM¬° false¡C
  3. Àˬd request ¬O§_¤´µM¬° false¡]¦pªG¤@¤Á¶¶§Q´N¤£·|¬O false¡^¡C
  4. ¦pªG¥X²{°ÝÃD¡]request ¬O false¡^«h¨Ï¥Î JavaScript ĵ§i³qª¾¨Ï¥ÎªÌ¥X²{¤F°ÝÃD¡C

³o¼Ë­×§ïµ{¦¡½X¤§«á¦A¨Ï¥Î Internet Explorer ¸ÕÅç¡A´NÀ³¸Ó¬Ý¨ì¤w¸g«Ø¥ßªºªí³æ¡]¨S¦³¿ù»~®ø®§¡^¡C§Ú¹êÅ窺µ²ªG¦p ¹Ï 2 ©Ò¥Ü¡C

Top



¹Ï 2. Internet Explorer ¥¿±`¤u§@

¡@

ÀRºA»P°ÊºA

¦A¬Ý¤@¬Ý²M³æ 1¡B3 ©M 4¡Aª`·N¡A©Ò¦³³o¨Çµ{¦¡½X³£ª½±µ´O¤J¦b script ¼Ð°O¤¤¡C¹³³oºØ¤£©ñ¨ì¤èªk©Î¨ç¼ÆÅ餤ªº JavaScript µ{¦¡½XºÙ¬°ÀRºA JavaScript¡C´N¬O»¡µ{¦¡½X¬O¦b­¶­±Åã¥Üµ¹¨Ï¥ÎªÌ¤§«eªº¬Y­Ó®É­Ô°õ¦æ¡C¡]ÁöµM®Ú¾Ú³W½d¤£¯à§¹¥þºë½T¦a ª¾¹D³o¨Çµ{¦¡½X¦ó®É°õ¦æ¹ïÂsÄý¾¹¦³¤°»ò¼vÅT¡A¦ý¬O¥i¥H«OÃÒ³o¨Çµ{¦¡½X¦b¨Ï¥ÎªÌ¯à°÷»P­¶­±¤¬°Ê¤§«e°õ¦æ¡C¡^³o¤]¬O¦h¼Æ Ajax µ{¦¡³]­p®v«Ø¥ß XMLHttpRequest ª«¥óªº¤@¯ë¤è¦¡¡C

´N¬O»¡¡A¤]¥i¥H¹³ ²M³æ 5 ¨º¼Ë±N³o¨Çµ{¦¡½X©ñ¦b¤@­Ó¤èªk¤¤¡C



²M³æ 5. ±N XMLHttpRequest «Ø¥ßµ{¦¡½X²¾°Ê¨ì¤èªk¤¤

 <script language="javascript" type="text/javascript">

var request;

function createRequest() {

  try {

    request = new XMLHttpRequest();

  } catch (trymicrosoft) {

    try {

      request = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (othermicrosoft) {

      try {

        request = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (failed) {

        request = false;

      }

    }

  }

  if (!request)

    alert("Error initializing XMLHttpRequest!");

}

</script>

 

¦pªG«ö·Ó³oºØ¤è¦¡½s¼gµ{¦¡½X¡A¨º»ò¦b³B²z Ajax ¤§«e»Ý­n¨Ï¥Î¸Ó¤èªk¡C¦]¦¹Áٻݭn ²M³æ 6 ³o¼Ëªºµ{¦¡½X¡C


¡@

Top


²M³æ 6. ¨Ï¥Î XMLHttpRequest ªº«Ø¥ß¤èªk

 <script language="javascript" type="text/javascript">

var request;

function createRequest() {

  try {

    request = new XMLHttpRequest();

  } catch (trymicrosoft) {

    try {

      request = new ActiveXObject("Msxml2.XMLHTTP");

    } catch (othermicrosoft) {

      try {

        request = new ActiveXObject("Microsoft.XMLHTTP");

      } catch (failed) {

        request = false;

      }

    }

  }

  if (!request)

    alert("Error initializing XMLHttpRequest!");

}

function getCustomerInfo() {

  createRequest();

  // Do something with the request variable

}

</script>

 

¦¹µ{¦¡½X°ß¤@ªº°ÝÃD¬O±À¿ð¤F¿ù»~³qª¾¡A³o¤]¬O¦h¼Æ Ajax µ{¦¡³]­p®v¤£±Ä¥Î³o¤@¤èªkªº­ì¦]¡C°²³]¤@­Ó½ÆÂøªºªí³æ¦³ 10 ©Î 15 ­ÓÄæ¦ì¡B¿ï¾Ü®Øµ¥¡A·í¨Ï¥ÎªÌ¦b²Ä 14 ­ÓÄæ¦ì¡]«ö·Óªí³æ¶¶§Ç±q¤W¨ì¤U¡^¿é¤J¤å¦r®É­n±Ò°Ê¬Y¨Ç Ajax µ{¦¡½X¡C³o®É­Ô°õ¦æ getCustomerInfo() ¹Á¸Õ«Ø¥ß¤@­Ó XMLHttpRequest ª«¥ó¡A¦ý¡]¹ï©ó¥»¨Ò¨Ó»¡¡^¥¢±Ñ¤F¡CµM«á¦V¨Ï¥ÎªÌÅã¥Ü¤@±øÄµ§i¡A©ú½T¦a§i¶D¥L­Ì¤£¯à¨Ï¥Î¸ÓÀ³¥Îµ{¦¡¡C¦ý¨Ï¥ÎªÌ¤w¸gªá¶O¤F«Ü¦h®É¶¡¦bªí³æ¤¤¿é¤J¸ê®Æ¡I³o¬O«D±`¥O¤H°Q¹½ªº¡A¦Ó°Q¹½ÅãµM¤£·|§l¤Þ¨Ï¥ÎªÌ¦A¦¸¦s¨ú±zªººô¯¸¡C

¦pªG¨Ï¥ÎÀRºA JavaScript¡A¨Ï¥ÎªÌ¦b«ö¤U­¶­±ªº®É­Ô«Ü§Ö´N·|¬Ý¨ì¿ù»~¸ê°T¡C³o¼Ë¤]«Ü·Ð¤H¡A¬O¤£¬O¡H¥i¯à¥O¨Ï¥ÎªÌ¿ù»~¦a»{¬°±zªº Web À³¥Îµ{¦¡¤£¯à¦b¥LªºÂsÄý¾¹¤W°õ¦æ¡C¤£¹L¡A·íµM­n¤ñ¥L­Ìªá¶O¤F 10 ¤ÀÄÁ¿é¤J¸ê°T¤§«á¦AÅã¥Ü¦P¼Ëªº¿ù»~­n¦n¡C¦]¦¹¡A§Ú«ØÄ³½s¼gÀRºAªºµ{¦¡½X¡AÅý¨Ï¥ÎªÌºÉ¥i¯à¦­¦aµo²{°ÝÃD¡C

¡@

¥Î XMLHttpRequest µo°e½Ð¨D

±o¨ì½Ð¨Dª«¥ó¤§«á´N¥i¥H¶i¤J½Ð¨D/¦^À³°j°é¤F¡C°O¦í¡AXMLHttpRequest °ß¤@ªº¥Øªº¬OÅý±zµo°e½Ð¨D©M±µ¦¬¦^À³¡C¨ä¥L¤@¤Á³£¬O JavaScript¡BCSS ©Î­¶­±¤¤¨ä¥Lµ{¦¡½Xªº¤u§@¡G§ïÅܨϥΪ̤¶­±¡B¤Á´«¹Ï¹³¡B¸ÑÄÀ¦øªA¾¹ªð¦^ªº¸ê®Æ¡C·Ç³Æ¦n XMLHttpRequest ¤§«á¡A´N¥i¥H¦V¦øªA¾¹µo°e½Ð¨D¤F¡C

Åwªï¨Ï¥Î¨F½c

Ajax ±Ä¥Î¤@ºØ¨F½c¦w¥þ¼Ò«¬¡C¦]¦¹¡AAjax µ{¦¡½X¡]¨ãÅé¨Ó»¡´N¬O XMLHttpRequest ª«¥ó¡^¥u¯à¹ï©Ò¦bªº¦P¤@­Óºô°ìµo°e½Ð¨D¡C¥H«áªº¤å³¹¤¤±N¶i¤@¨B¤¶²Ð¦w¥þ©M Ajax¡A²{¦b¥u­nª¾¹D¦b¥»¦a¾÷¾¹¤W°õ¦æªºµ{¦¡½X¥u¯à¹ï¥»¦a¾÷¾¹¤Wªº¦øªA¾¹ºÝScriptµo°e½Ð¨D¡C¦pªGÅý Ajax µ{¦¡½X¦b www.breakneckpizza.com ¤W°õ¦æ¡A«h¥²¶· www.breakneck.com ¤¤°õ¦æªºScriptµo°e½Ð¨D¡C

Top

³]©w¦øªA¾¹ URL

­º¥ý­n½T©w³s±µªº¦øªA¾¹ªº URL¡C³o¨Ã¤£¬O Ajax ªº¯S®í­n¨D¡A¦ý¤´µM¬O«Ø¥ß³s±µ©Ò¥²»Ýªº¡AÅãµM²{¦b±zÀ³¸Óª¾¹D¦p¦ó¬[ºc URL ¤F¡C¦h¼ÆÀ³¥Îµ{¦¡¤¤³£·|µ²¦X¤@¨ÇÀRºA¸ê®Æ©M¨Ï¥ÎªÌ³B²zªºªí³æ¤¤ªº¸ê®Æ¨Ó¬[ºc¸Ó URL¡C¤ñ¦p¡A²M³æ 7 ¤¤ªº JavaScript µ{¦¡½XÀò¨ú¹q¸Ü¸¹½XÄæ¦ìªº­È¨Ã¥Î¨ä¬[ºc URL¡C


²M³æ 7. «Ø¥ß½Ð¨D URL

 <script language="javascript" type="text/javascript">

   var request = false;

   try {

     request = new XMLHttpRequest();

   } catch (trymicrosoft) {

     try {

       request = new ActiveXObject("Msxml2.XMLHTTP");

     } catch (othermicrosoft) {

       try {

         request = new ActiveXObject("Microsoft.XMLHTTP");

       } catch (failed) {

         request = false;

       } 

     }

   }

   if (!request)

     alert("Error initializing XMLHttpRequest!");

   function getCustomerInfo() {

     var phone = document.getElementById("phone").value;

     var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

   }

</script>

 

³oùبS¦³ÃøÀ´ªº¦a¤è¡C­º¥ý¡Aµ{¦¡½X«Ø¥ß¤F¤@­Ó·sÅÜ¼Æ phone¡A¨Ã§â ID ¬° ¡§phone¡¨ ªºªí³æ¦r¦êªº­È½á¤©µ¹¥¦¡C²M³æ 8 ®i¥Ü¤F³o­Óªí³æªº XHTML¡A¨ä¤¤¥i¥H¬Ý¨ì phone Äæ¦ì¤Î¨ä id ÄݩʡC


²M³æ 8. Break Neck Pizza ªí³æ

  <body>

  <p><img src="breakneck-logo_4c.gif" alt="Break Neck Pizza" /></p>

  <form action="POST">

   <p>Enter your phone number:

    <input type="text" size="14" name="phone" id="phone"

           onChange="getCustomerInfo();" />

   </p>

   <p>Your order will be delivered to:</p>

   <div id="address"></div>

   <p>Type your order in here:</p>

   <p><textarea name="order" rows="6" cols="50" id="order"></textarea></p>

   <p><input type="submit" value="Order Pizza" id="submit" /></p>

  </form>

 </body>

 

ÁÙ­nª`·N¡A·í¨Ï¥ÎªÌ¿é¤J¹q¸Ü¸¹½X©ÎªÌ§ïÅܹq¸Ü¸¹½X®É¡A±NIJµo ²M³æ 8 ©Ò¥Üªº getCustomerInfo() ¤èªk¡C¸Ó¤èªk¨ú±o¹q¸Ü¸¹½X¨Ã¬[ºc¦sÀx¦b url ÅܼƤ¤ªº URL ¦r¦ê¡C°O¦í¡A¥Ñ©ó Ajax µ{¦¡½X¬O¨F½c«¬ªº¡A¦]¦Ó¥u¯à³s±µ¨ì¦P¤@­Óºô°ì¡A¹ê»Ú¤W URL ¤¤¤£»Ý­n¥\¯àÅܼƦWºÙ¡C¸Ó½d¨Ò¤¤ªºScript¦W¬° /cgi-local/lookupCustomer.php¡C³Ì«á¡A¹q¸Ü¸¹½X§@¬° GET °Ñ¼Æªþ¥[¨ì¸ÓScript¤¤¡G"phone=" + escape(phone)¡C

¦pªG¥H«e¨S¥Î¨£¹L escape() ¤èªk¡A¥¦¥Î©óÂà¸q¤£¯à¥Î©ú¤å¥¿½Tµo°eªº¥ô¦ó¦r¤¸¡C¤ñ¦p¡A¹q¸Ü¸¹½X¤¤ªºªÅ®æ±N³QÂà´«¦¨¦r¤¸ %20¡A±q¦Ó¯à°÷¦b URL ¤¤¶Ç»¼³o¨Ç¦r¤¸¡C

¥i¥H®Ú¾Ú»Ý­n²K¥[¥ô·N¦h­Ó°Ñ¼Æ¡C¤ñ¦p¡A¦pªG»Ý­n¼W¥[¥t¤@­Ó°Ñ¼Æ¡A¥u»Ý­n±N¨äªþ¥[¨ì URL ¤¤¨Ã¥Î ¡§»P¡¨¡]&¡^¦r¤¸¤À¶} [²Ä¤@­Ó°Ñ¼Æ¥Î°Ý¸¹¡]?¡^©MScript¦W¤À¶}]¡C

Top

¥´¶}½Ð¨D 

open() ¬O¥´¶}¶Ü¡H
Internet
¶}µo¤H­û¹ï open() ¤èªk¨ì©³°µ¤°»ò¨S¦³¹F¦¨¤@­P¡C¦ý¥¦¹ê»Ú¤W¨Ã¤£¬O ¥´¶}¤@­Ó½Ð¨D¡C¦pªGºÊ±± XHTML/Ajax ­¶­±¤Î¨ä³s±µScript¤§¶¡ªººô¸ô©M¸ê®Æ¶Ç»¼¡A·í¨Ï¥Î open() ¤èªk®É±N¬Ý¤£¨ì¥ô¦ó³q°T¡C¤£²M·¡¬°¦ó¿ï¥Î¤F³o­Ó¦W¦r¡A¦ýÅãµM¤£¬O¤@­Ó¦nªº¿ï¾Ü¡C

 

¦³¤F­n³s±µªº URL «á´N¥i¥H°t¸m½Ð¨D¤F¡C¥i¥H¥Î XMLHttpRequest ª«¥óªº open() ¤èªk¨Ó§¹¦¨¡C¸Ó¤èªk¦³¤­­Ó°Ñ¼Æ¡G

  • request-type¡Gµo°e½Ð¨DªºÃþ«¬¡C¨å«¬ªº­È¬O GET ©Î POST¡A¦ý¤]¥i¥Hµo°e HEAD ½Ð¨D¡C
  • url¡G­n³s±µªº URL¡C
  • asynch¡G¦pªG§Æ±æ¨Ï¥Î«D¦P¨B³s±µ«h¬° true¡A§_«h¬° false¡C¸Ó°Ñ¼Æ¬O¥i¿ïªº¡AÀq»{¬° true¡C
  • username¡G¦pªG»Ý­n¨­¥÷ÅçÃÒ¡A«h¥i¥H¦b¦¹«ü©w¨Ï¥ÎªÌ¦W¡C¸Ó¥i¿ï°Ñ¼Æ¨S¦³¹w³]­È¡C
  • password¡G¦pªG»Ý­n¨­¥÷ÅçÃÒ¡A«h¥i¥H¦b¦¹«ü©w±K½X¡C¸Ó¥i¿ï°Ñ¼Æ¨S¦³¹w³]­È¡C

³q±`¨Ï¥Î¨ä¤¤ªº«e¤T­Ó°Ñ¼Æ¡C¨Æ¹ê¤W¡A§Y¨Ï»Ý­n«D¦P¨B³s±µ¡A¤]À³¸Ó«ü©w²Ä¤T­Ó°Ñ¼Æ¬° ¡§true¡¨¡C³o¬O¹w³]­È¡A¦ý°í«ù©ú½T«ü©w½Ð¨D¬O«D¦P¨BªºÁÙ¬O¦P¨Bªº§ó®e©ö²z¸Ñ¡C

±N³o¨Çµ²¦X°_¨Ó¡A³q±`·|±o¨ì ²M³æ 9 ©Ò¥Üªº¤@¦æµ{¦¡½X¡C

²M³æ 9. ¥´¶}½Ð¨D

    function getCustomerInfo() {

     var phone = document.getElementById("phone").value;

     var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

     request.open("GET", url, true);

   }

 

¤@¥¹³]©w¦n¤F URL¡A¨ä¥L´N²³æ¤F¡C¦h¼Æ½Ð¨D¨Ï¥Î GET ´N°÷¤F¡]«á­±ªº¤å³¹¤¤±N¬Ý¨ì»Ý­n¨Ï¥Î POST ªº±¡ªp¡^¡A¦A¥[¤W URL¡A³o´N¬O¨Ï¥Î open() ¤èªk»Ý­nªº¥þ³¡¤º®e¤F¡C

¬D¾Ô«D¦P¨B©Ê

¥»¨t¦Cªº«á­±¤@½g¤å³¹¤¤¡A§Ú±N¥Î«Ü¦h®É¶¡½s¼g©M¨Ï¥Î«D¦P¨Bµ{¦¡½X¡A¦ý¬O±zÀ³¸Ó©ú¥Õ¬°¤°»ò open() ªº³Ì«á¤@­Ó°Ñ¼Æ³o»ò­«­n¡C¦b¤@¯ëªº½Ð¨D/¦^À³¼Ò«¬¤¤¡A¤ñ¦p Web 1.0¡A¨Ï¥ÎªÌºÝ¡]ÂsÄý¾¹©ÎªÌ¥»¦a¾÷¾¹¤W°õ¦æªºµ{¦¡½X¡^¦V¦øªA¾¹µo¥X½Ð¨D¡C¸Ó½Ð¨D¬O¦P¨Bªº¡A´«¥y¸Ü»¡¡A¨Ï¥ÎªÌºÝµ¥«Ý¦øªA¾¹ªº¦^À³¡C·í¨Ï¥ÎªÌºÝµ¥«Ýªº®É­Ô¡A¦Ü¤Ö·|¥Î¬YºØ§Î¦¡³qª¾±z¦bµ¥«Ý¡G

  • ¨Fº|¡]¯S§O¬O Windows ¤W¡^¡C
  • ±ÛÂ઺¥Ö²y¡]³q±`¦b Mac ¾÷¾¹¤W¡^¡C
  • À³¥Îµ{¦¡°ò¥»¤W­áµ²¤F¡AµM«á¹L¤@¬q®É¶¡´å¼ÐÅܤƤF¡C

³o¥¿¬O Web À³¥Îµ{¦¡Åý¤H·P¨ì²Â©å©Î½wºCªº­ì¦] ¡X¡X ¯Ê¥F¯u¥¿ªº¤¬°Ê©Ê¡C«ö¤U«ö¶s®É¡AÀ³¥Îµ{¦¡¹ê»Ú¤WÅܱo¤£¯à¨Ï¥Î¡Aª½¨ì­è­èIJµoªº½Ð¨D±o¨ì¦^À³¡C¦pªG½Ð¨D»Ý­n¤j¶q¦øªA¾¹³B²z¡A¨º»òµ¥«Ýªº®É¶¡¥i¯à«Üªø¡]¦Ü¤Ö¦b³o­Ó¦h³B²z¾¹¡BDSL ¨S¦³µ¥«Ýªº¥@¬É¤¤¬O¦p¦¹¡^¡C

¦Ó«D¦P¨B½Ð¨D¤£ µ¥«Ý¦øªA¾¹¦^À³¡Cµo°e½Ð¨D«áÀ³¥Îµ{¦¡Ä~Äò°õ¦æ¡C¨Ï¥ÎªÌ¤´µM¥i¥H¦b Web ªí³æ¤¤¿é¤J¸ê®Æ¡A¬Æ¦ÜÂ÷¶}ªí³æ¡C¨S¦³±ÛÂ઺¥Ö²y©ÎªÌ¨Fº|¡AÀ³¥Îµ{¦¡¤]¨S¦³©úÅ㪺­áµ²¡C¦øªA¾¹®¨®¨¦a¦^À³½Ð¨D¡A§¹¦¨«á§i¶D­ì¨Óªº½Ð¨DªÌ¤u§@¤w¸gµ²§ô¡]¨ãÅ骺¿ìªk«Ü§Ö´N·|¬Ý¨ì¡^¡Cµ²ªG¬O¡AÀ³¥Îµ{¦¡·Pı¤£ ¨º»ò¿ð¶w©ÎªÌ½wºC¡A¦Ó¬O¦^À³¨³³t¡B¤¬°Ê©Ê±j¡A·Pı§Ö¦h¤F¡C³o¶È¶È¬O Web 2.0 ªº¤@³¡¤À¡A¦ý¥¦¬O«Ü­«­nªº¤@³¡¤À¡C©Ò¦³¦Ñ®Mªº GUI ²Õ¥ó©M Web ³]­p¨å¨Ò³£¤£¯à§JªA½wºC¡B¦P¨Bªº½Ð¨D/¦^À³¼Ò«¬¡C

µo°e½Ð¨D

¤@¥¹¥Î open() °t¸m¦n¤§«á¡A´N¥i¥Hµo°e½Ð¨D¤F¡C©¯¹Bªº¬O¡Aµo°e½Ð¨Dªº¤èªkªº¦WºÙ­n¤ñ open() ¾A·í¡A¥¦´N¬O send()¡C

send() ¥u¦³¤@­Ó°Ñ¼Æ¡A´N¬O­nµo°eªº¤º®e¡C¦ý¬O¦b¦Ò¼{³o­Ó¤èªk¤§«e¡A¦^·Q¤@¤U«e­±¤w¸g³z¹L URL ¥»¨­µo°e¹L¸ê®Æ¤F¡G

var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

 

ÁöµM¥i¥H¨Ï¥Î send() µo°e¸ê®Æ¡A¦ý¤]¯à³z¹L URL ¥»¨­µo°e¸ê®Æ¡C¨Æ¹ê¤W¡AGET ½Ð¨D¡]¦b¨å«¬ªº Ajax À³¥Î¤¤¤j¬ù¥e 80%¡^¤¤¡A¥Î URL µo°e¸ê®Æ­n®e©ö±o¦h¡C¦pªG»Ý­nµo°e¦w¥þ¸ê°T©Î XML¡A¥i¯à­n¦Ò¼{¨Ï¥Î send() µo°e¤º®e¡]¥»¨t¦Cªº«áÄò¤å³¹¤¤±N°Q½×¦w¥þ¸ê®Æ©M XML ®ø®§¡^¡C¦pªG¤£»Ý­n³z¹L send() ¶Ç»¼¸ê®Æ¡A«h¥u­n¶Ç»¼ null §@¬°¸Ó¤èªkªº°Ñ¼Æ§Y¥i¡C¦]¦¹±z·|µo²{¦b¥»¤å¤¤ªº¨Ò¤l¤¤¥u»Ý­n³o¼Ëµo°e½Ð¨D¡]°Ñ¨£ ²M³æ 10¡^¡C

Top


²M³æ 10. µo°e½Ð¨D

    function getCustomerInfo() {

     var phone = document.getElementById("phone").value;

     var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

     request.open("GET", url, true);

     request.send(null);

   }

 

«ü©w¦^½Õ¤èªk

²{¦b§Ú­Ì©Ò°µªº¥u¦³«Ü¤Ö¤@ÂI¬O·sªº¡B­²©R©Êªº©Î«D¦P¨Bªº¡C¥²¶·©Ó»{¡Aopen() ¤èªk¤¤ ¡§true¡¨ ³o­Ó¤p¤pªºÃöÁä¦r«Ø¥ß¤F«D¦P¨B½Ð¨D¡C¦ý¬O°£¦¹¤§¥~¡A³o¨Çµ{¦¡½X»P¥Î Java servlet ¤Î JSP¡BPHP ©Î Perl µ{¦¡¶}µo¨S¦³¤°»ò¨â¼Ë¡C¨º»ò Ajax ©M Web 2.0 ³Ì¤jªº¯µ±K¬O¤°»ò©O¡H¯µ±K´N¦b©ó XMLHttpRequest ªº¤@­Ó²³æÄÝ©Ê onreadystatechange¡C

­º¥ý¤@©w­n²z¸Ñ³o¨Çµ{¦¡½X¤¤ªº¬yµ{¡]¦pªG»Ý­n½Ð¦^ÅU ²M³æ 10¡^¡C«Ø¥ß¨ä½Ð¨DµM«áµo¥X½Ð¨D¡C¦¹¥~¡A¦]¬°¬O«D¦P¨B½Ð¨D¡A©Ò¥H JavaScript ¤èªk¡]¨Ò¤l¤¤ªº getCustomerInfo()¡^¤£·|µ¥«Ý¦øªA¾¹¡C¦]¦¹µ{¦¡½X±NÄ~Äò°õ¦æ¡A´N¬O»¡¡A±N°h¥X¸Ó¤èªk¦Ó§â±±¨îªð¦^µ¹ªí³æ¡C¨Ï¥ÎªÌ¥i¥HÄ~Äò¿é¤J¸ê°T¡AÀ³¥Îµ{¦¡¤£·|µ¥«Ý¦øªA¾¹¡C

³o´N´£¥X¤F¤@­Ó¦³½ìªº°ÝÃD¡G¦øªA¾¹§¹¦¨¤F½Ð¨D¤§«á·|µo¥Í¤°»ò¡Hµª®×¬O¤°»ò¤]¤£µo¥Í¡A¦Ü¤Ö¹ï²{¦bªºµ{¦¡½X¦Ó¨¥¦p¦¹¡IÅãµM³o¼Ë¤£¦æ¡A¦]¦¹¦øªA¾¹¦b§¹¦¨³z¹L XMLHttpRequest µo°eµ¹¥¦ªº½Ð¨D³B²z¤§«á»Ý­n¬YºØ«ü¥Ü»¡©ú«ç»ò°µ¡C

  

¦b JavaScript ¤¤¤Þ¥Î¨ç¼Æ
JavaScript
¬O¤@ºØ®zÃþ«¬ªº»y¨¥¡A¥i¥H¥ÎÅܼƤޥΥô¦óªF¦è¡C¦]¦¹¦pªGÁn©ú¤F¤@­Ó¨ç¼Æ updatePage()¡AJavaScript ¤]±N¸Ó¨ç¼Æ¦W¬Ý§@¬O¤@­ÓÅܼơC´«¥y¸Ü»¡¡A¥i¥ÎÅܼƦW updatePage ¦bµ{¦¡½X¤¤¤Þ¥Î¨ç¼Æ¡C

 ²{¦b onreadystatechange Äݩʸӵn³õ¤F¡C¸ÓÄݩʤ¹³\«ü©w¤@­Ó¦^½Õ¨ç¼Æ¡C¦^½Õ¤¹³\¦øªA¾¹¡]²q±o¨ì¶Ü¡H¡^¤Ï¦V¨Ï¥Î Web ­¶­±¤¤ªºµ{¦¡½X¡C¥¦¤]µ¹¤F¦øªA¾¹¤@©wµ{«×ªº±±¨îÅv¡A·í¦øªA¾¹§¹¦¨½Ð¨D¤§«á¡A·|¬d¬Ý XMLHttpRequest ª«¥ó¡A¯S§O¬O onreadystatechange ÄݩʡCµM«á¨Ï¥Î¸ÓÄݩʫü©wªº¥ô¦ó¤èªk¡C¤§©Ò¥HºÙ¬°¦^½Õ¬O¦]¬°¦øªA¾¹¦Vºô­¶µo°_¨Ï¥Î¡AµL½×ºô­¶¥»¨­¦b°µ¤°»ò¡C¤ñ¤è»¡¡A¥i¯à¦b¨Ï¥ÎªÌ§¤¦b´È¤l¤W¤â¨S¦³¸IÁä½Lªº®É­Ô¨Ï¥Î¸Ó¤èªk¡A¦ý¬O¤]¥i¯à¦b¨Ï¥ÎªÌ¿é¤J¡B²¾°Ê·Æ¹«¡Bºu°Ê¿Ã¹õ©ÎªÌ«ö¤U«ö¶s®É¨Ï¥Î¸Ó¤èªk¡C¥¦¨Ã¤£Ãö¤ß¨Ï¥ÎªÌ¦b°µ¤°»ò¡C

³o´N¬OºÙ¤§¬°«D¦P¨Bªº­ì¦]¡G¨Ï¥ÎªÌ¦b¤@¼h¤W¾Þ§@ªí³æ¡A¦Ó¦b¥t¤@¼h¤W¦øªA¾¹¦^À³½Ð¨D¨ÃIJµo onreadystatechange Äݩʫü©wªº¦^½Õ¤èªk¡C¦]¦¹»Ý­n¹³ ²M³æ 11 ¤@¼Ë¦bµ{¦¡½X¤¤«ü©w¸Ó¤èªk¡C



²M³æ 11. ³]©w¦^½Õ¤èªk

    function getCustomerInfo() {

     var phone = document.getElementById("phone").value;

     var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

     request.open("GET", url, true);

     request.onreadystatechange = updatePage;

     request.send(null);

   }

 

»Ý­n¯S§Oª`·Nªº¬O¸ÓÄݩʦbµ{¦¡½X¤¤³]©wªº¦ì¸m ¡X¡X ¥¦¬O¦b¨Ï¥Î send() ¤§«e ³]©wªº¡Cµo°e½Ð¨D¤§«e¥²¶·³]©w¸ÓÄݩʡA³o¼Ë¦øªA¾¹¦b¦^µª§¹¦¨½Ð¨D¤§«á¤~¯à¬d¬Ý¸ÓÄݩʡC²{¦b³Ñ¤Uªº´N¥u¦³½s¼g updatePage() ¤èªk¤F¡A³o¬O¥»¤å³Ì«á¤@¸`­n°Q½×ªº­«ÂI¡C

Top

³B²z¦øªA¾¹¦^À³

µo°e½Ð¨D¡A¨Ï¥ÎªÌ°ª¿³¦a¨Ï¥Î Web ªí³æ¡]¦P®É¦øªA¾¹¦b³B²z½Ð¨D¡^¡A¦Ó²{¦b¦øªA¾¹§¹¦¨¤F½Ð¨D³B²z¡C¦øªA¾¹¬d¬Ý onreadystatechange ÄݩʽT©w­n¨Ï¥Îªº¤èªk¡C°£¦¹¥H¥~¡A¥i¥H±N±zªºÀ³¥Îµ{¦¡¬Ý§@¨ä¥LÀ³¥Îµ{¦¡¤@¼Ë¡AµL½×¬O§_«D¦P¨B¡C´«¥y¸Ü»¡¡A¤£¤@©w­n±Ä¨ú¯S®íªº°Ê§@½s¼g¦^À³¦øªA¾¹ªº¤èªk¡A¥u»Ý­n§ïÅÜªí³æ¡AÅý¨Ï¥ÎªÌ¦s¨ú¥t¤@­Ó URL ©ÎªÌ°µ¦^À³¦øªA¾¹»Ý­nªº¥ô¦ó¨Æ±¡¡C³o¤@¸`§Ú­Ì­«ÂI°Q½×¹ï¦øªA¾¹ªº¦^À³©M¤@ºØ¨å«¬ªº°Ê§@ ¡X¡X §Y®É§ïÅܨϥΪ̬ݨ쪺ªí³æ¤¤ªº¤@³¡¤À¡C

¦^½Õ©M Ajax

²{¦b§Ú­Ì¤w¸g¬Ý¨ì¦p¦ó§i¶D¦øªA¾¹§¹¦¨«áÀ³¸Ó°µ¤°»ò¡G±N XMLHttpRequest ª«¥óªº onreadystatechange Äݩʳ]©w¬°­n°õ¦æªº¨ç¼Æ¦W¡C³o¼Ë¡A·í¦øªA¾¹³B²z§¹½Ð¨D«á´N·|¦Û°Ê¨Ï¥Î¸Ó¨ç¼Æ¡C¤]¤£»Ý­n¾á¤ß¸Ó¨ç¼Æªº¥ô¦ó°Ñ¼Æ¡C§Ú­Ì±q¤@­Ó²³æªº¤èªk¶}©l¡A¦p ²M³æ 12 ©Ò¥Ü¡C

²M³æ 12. ¦^½Õ¤èªkªºµ{¦¡½X

 <script language="javascript" type="text/javascript">

   var request = false;

   try {

     request = new XMLHttpRequest();

   } catch (trymicrosoft) {

     try {

       request = new ActiveXObject("Msxml2.XMLHTTP");

     } catch (othermicrosoft) {

       try {

         request = new ActiveXObject("Microsoft.XMLHTTP");

       } catch (failed) {

         request = false;

       } 

     }

   }

   if (!request)

     alert("Error initializing XMLHttpRequest!");

   function getCustomerInfo() {

     var phone = document.getElementById("phone").value;

     var url = "/cgi-local/lookupCustomer.php?phone=" + escape(phone);

     request.open("GET", url, true);

     request.onreadystatechange = updatePage;

     request.send(null);

   }

   function updatePage() {

     alert("Server is done!");

   }

</script>

 

¥¦¶È¶Èµo¥X¤@¨Ç²³æªºÄµ§i¡A§i¶D±z¦øªA¾¹¤°»ò®É­Ô§¹¦¨¤F¥ô°È¡C¦b¦Û¤vªººô­¶¤¤¸ÕÅç³o¨Çµ{¦¡½X¡AµM«á¦bÂsÄý¾¹¤¤¥´¶}¡]¦pªG§Æ±æ¬d¬Ý¸Ó¨Ò¤¤ªº XHTML¡A½Ð°Ñ¾\ ²M³æ 8¡^¡C¿é¤J¹q¸Ü¸¹½XµM«áÂ÷¶}¸ÓÄæ¦ì¡A±N¬Ý¨ì¤@­Ó¼u¥XªºÄµ§iµøµ¡¡]¦p ¹Ï 3 ©Ò¥Ü¡^¡A¦ý¬O«ö¤U OK ¤S¥X²{¤F¡K¡K



¹Ï 3. ¼u¥Xĵ§iªº Ajax µ{¦¡½X

Top

®Ú¾ÚÂsÄý¾¹ªº¤£¦P¡A¦bªí³æ°±¤î¼u¥Xĵ§i¤§«e·|¬Ý¨ì¨â¦¸¡B¤T¦¸¬Æ¦Ü¥|¦¸Äµ§i¡C³o¬O«ç»ò¦^¨Æ©O¡H­ì¨Ó§Ú­ÌÁÙ¨S¦³¦Ò¼{ HTTP ´Nºüª¬ºA¡A³o¬O½Ð¨D/¦^À³°j°é¤¤ªº¤@­Ó­«­n³¡¤À¡C

HTTP ´Nºüª¬ºA

«e­±´£¨ì¡A¦øªA¾¹¦b§¹¦¨½Ð¨D¤§«á·|¦b XMLHttpRequest ªº onreadystatechange Äݩʤ¤¬d§ä­n¨Ï¥Îªº¤èªk¡C³o¬O¯uªº¡A¦ýÁÙ¤£§¹¾ã¡C¨Æ¹ê¤W¡A¨C·í HTTP ´Nºüª¬ºA§ïÅܮɥ¦³£·|¨Ï¥Î¸Ó¤èªk¡C³o·N¨ýµÛ¤°»ò©O¡H­º¥ý¥²¶·²z¸Ñ HTTP ´Nºüª¬ºA¡C

HTTP ´Nºüª¬ºAªí¥Ü½Ð¨Dªºª¬ºA©Î±¡§Î¡C¥¦¥Î©ó½T©w¸Ó½Ð¨D¬O§_¤w¸g¶}©l¡B¬O§_±o¨ì¤F¦^À³©ÎªÌ½Ð¨D/¦^À³¼Ò«¬¬O§_¤w¸g§¹¦¨¡C¥¦ÁÙ¥i¥HÀ°§U½T©wŪ¨ú¦øªA¾¹´£¨Ñªº¦^À³¤å¦r©Î¸ê®Æ¬O§_¦w¥þ¡C¦b Ajax À³¥Îµ{¦¡¤¤»Ý­nÁA¸Ñ¤­ºØ´Nºüª¬ºA¡G

  • 0¡G½Ð¨D¨S¦³µo¥X¡]¦b¨Ï¥Î open() ¤§«e¡^¡C
  • 1¡G½Ð¨D¤w¸g«Ø¥ß¦ýÁÙ¨S¦³µo¥X¡]¨Ï¥Î send() ¤§«e¡^¡C
  • 2¡G½Ð¨D¤w¸gµo¥X¥¿¦b³B²z¤§¤¤¡]³oùسq±`¥i¥H±q¦^À³±o¨ì¤º®eÀY³¡¡^¡C
  • 3¡G½Ð¨D¤w¸g³B²z¡A¦^À³¤¤³q±`¦³³¡¤À¸ê®Æ¥i¥Î¡A¦ý¬O¦øªA¾¹ÁÙ¨S¦³§¹¦¨¦^À³¡C
  • 4¡G¦^À³¤w§¹¦¨¡A¥i¥H¦s¨ú¦øªA¾¹¦^À³¨Ã¨Ï¥Î¥¦¡C

»P¤j¦h¼Æ¸óÂsÄý¾¹°ÝÃD¤@¼Ë¡A³o¨Ç´Nºüª¬ºAªº¨Ï¥Î¤]¤£ºÉ¤@­P¡C±z¤]³\´Á±æ¥ô°È´Nºüª¬ºA±q 0 ¨ì 1¡B2¡B3 ¦A¨ì 4¡A¦ý¹ê»Ú¤W«Ü¤Ö¬O³oºØ±¡ªp¡C¤@¨ÇÂsÄý¾¹±q¤£³ø§i 0 ©Î 1 ¦Óª½±µ±q 2 ¶}©l¡AµM«á¬O 3 ©M 4¡C¨ä¥LÂsÄý¾¹«h³ø§i©Ò¦³ªºª¬ºA¡CÁÙ¦³¤@¨Ç«h¦h¦¸³ø§i´Nºüª¬ºA 1¡C¦b¤W¤@¸`¤¤¬Ý¨ì¡A¦øªA¾¹¦h¦¸¨Ï¥Î updatePage()¡A¨C¦¸¨Ï¥Î³£·|¼u¥Xĵ§i®Ø ¡X¡X ¥i¯à©M¹w´Áªº¤£¦P¡I

¹ï©ó Ajax µ{¦¡¶}µo¡A»Ý­nª½±µ³B²zªº°ß¤@ª¬ºA´N¬O´Nºüª¬ºA 4¡A¥¦ªí¥Ü¦øªA¾¹¦^À³¤w¸g§¹¦¨¡A¥i¥H¦w¥þ¦a¨Ï¥Î¦^À³¸ê®Æ¤F¡C°ò©ó¦¹¡A¦^½Õ¤èªk¤¤ªº²Ä¤@¦æÀ³¸Ó¦p ²M³æ 13 ©Ò¥Ü¡C



²M³æ 13. Àˬd´Nºüª¬ºA

    function updatePage() {

     if (request.readyState == 4)

       alert("Server is done!");

   }

 

­×§ï«á´N¥i¥H«OÃÒ¦øªA¾¹ªº³B²z¤w¸g§¹¦¨¡C¹Á¸Õ°õ¦æ·sª©¥»ªº Ajax µ{¦¡½X¡A²{¦b´N·|¬Ý¨ì»P¹w´Áªº¤@¼Ë¡A¥uÅã¥Ü¤@¦¸Äµ§i¸ê°T¤F¡C

HTTP ª¬ºA½X

ÁöµM ²M³æ 13 ¤¤ªºµ{¦¡½X¬Ý°_¨Ó¦ü¥G¤£¿ù¡A¦ý¬OÁÙ¦³¤@­Ó°ÝÃD ¡X¡X ¦pªG¦øªA¾¹¦^À³½Ð¨D¨Ã§¹¦¨¤F³B²z¦ý¬O³ø§i¤F¤@­Ó¿ù»~«ç»ò¿ì¡H­nª¾¹D¡A¦øªA¾¹ºÝµ{¦¡½XÀ³¸Ó©ú¥Õ¥¦¬O¥Ñ Ajax¡BJSP¡B´¶³q HTML ªí³æ©Î¨ä¥LÃþ«¬ªºµ{¦¡½X¨Ï¥Îªº¡A¦ý¥u¯à¨Ï¥Î¶Ç²Îªº Web ±M¥Î¤èªk³ø§i¸ê°T¡C¦Ó¦b Web ¥@¬É¤¤¡AHTTP µ{¦¡½X¥i¥H³B²z½Ð¨D¤¤¥i¯àµo¥Íªº¦UºØ°ÝÃD¡C

¤ñ¤è»¡¡A±zªÖ©w¹J¨ì¹L¿é¤J¤F¿ù»~ªº URL ½Ð¨D¦Ó±o¨ì 404 ¿ù»~½Xªº±¡§Î¡A¥¦ªí¥Ü¸Ó­¶­±¤£¦s¦b¡C³o¶È¶È¬O HTTP ½Ð¨D¯à°÷¦¬¨ìªº²³¦h¿ù»~½X¤¤ªº¤@ºØ¡]§¹¾ãªºª¬ºA½X¦Cªí½Ð°Ñ¾\ °Ñ¦Ò¸ê®Æ ¤¤ªº³sµ²¡^¡Cªí¥Ü©Ò¦s¨ú¸ê®Æ¨ü¨ì«OÅ@©ÎªÌ¸T¤î¦s¨úªº 403 ©M 401 ¤]«Ü±`¨£¡CµL½×­þºØ±¡ªp¡A³o¨Ç¿ù»~½X³£¬O±q§¹¦¨ªº¦^À³ ±o¨ìªº¡C´«¥y¸Ü»¡¡A¦øªA¾¹¼i¦æ¤F½Ð¨D¡]§Y HTTP ´Nºüª¬ºA¬O 4¡^¦ý¬O¨S¦³ªð¦^¨Ï¥ÎªÌºÝ¹w´Áªº¸ê®Æ¡C

¦]¦¹°£¤F´Nºüª¬ºA¥~¡AÁٻݭnÀˬd HTTP ª¬ºA¡C§Ú­Ì´Á±æªºª¬ºA½X¬O 200¡A¥¦ªí¥Ü¤@¤Á¶¶§Q¡C¦pªG´Nºüª¬ºA¬O 4 ¦Ó¥Bª¬ºA½X¬O 200¡A´N¥i¥H³B²z¦øªA¾¹ªº¸ê®Æ¤F¡A¦Ó¥B³o¨Ç¸ê®ÆÀ³¸Ó´N¬O­n¨Dªº¸ê®Æ¡]¦Ó¤£¬O¿ù»~©ÎªÌ¨ä¥L¦³°ÝÃDªº¸ê°T¡^¡C¦]¦¹ÁÙ­n¦b¦^½Õ¤èªk¤¤¼W¥[ª¬ºAÀˬd¡A¦p ²M³æ 14 ©Ò¥Ü¡C

Top


²M³æ 14. Àˬd HTTP ª¬ºA½X

    function updatePage() {

     if (request.readyState == 4)

       if (request.status == 200)

         alert("Server is done!");

   }

 

¬°¤F¼W¥[§ó°·§§ªº¿ù»~³B²z¨Ã¾¨¶qÁ×§K¹L©ó½ÆÂø¡A¥i¥H¼W¥[¤@¨â­Óª¬ºA½XÀˬd¡A½Ð¬Ý¤@¬Ý ²M³æ 15 ¤¤­×§ï«áªº updatePage() ª©¥»¡C

²M³æ 15. ¼W¥[¤@ÂI¿ù»~Àˬd

    function updatePage() {

     if (request.readyState == 4)

       if (request.status == 200)

         alert("Server is done!");

       else if (request.status == 404)

         alert("Request URL does not exist");

       else

         alert("Error: status code is " + request.status);

   }

 

²{¦b±N getCustomerInfo() ¤¤ªº URL §ï¬°¤£¦s¦bªº URL ¬Ý¬Ý·|µo¥Í¤°»ò¡CÀ³¸Ó·|¬Ý¨ìĵ§i¸ê°T»¡©ú­n¨Dªº URL ¤£¦s¦b ¡X¡X ¦n·¥¤F¡I«ÜÃø³B²z©Ò¦³ªº¿ù»~±ø¥ó¡A¦ý¬O³o¤@¤p¤pªº§ïÅܯà°÷²[»\¨å«¬ Web À³¥Îµ{¦¡¤¤ 80% ªº°ÝÃD¡C

Ū¨ú¦^À³¤å¦r

²{¦b¥i¥H½T«O½Ð¨D¤w¸g³B²z§¹¦¨¡]³z¹L´Nºüª¬ºA¡^¡A¦øªA¾¹µ¹¥X¤F¥¿±`ªº¦^À³¡]³z¹Lª¬ºA½X¡^¡A³Ì«á§Ú­Ì¥i¥H³B²z¦øªA¾¹ªð¦^ªº¸ê®Æ¤F¡Cªð¦^ªº¸ê®Æ«O¦s¦b XMLHttpRequest ª«¥óªº responseText Äݩʤ¤¡C

Ãö©ó responseText ¤¤ªº¤å¦r¤º®e¡A¤ñ¦p®æ¦¡©Mªø«×¡A¦³·N«O«ù§t½k¡C³o¼Ë¦øªA¾¹´N¥i¥H±N¤å¦r³]©w¦¨¥ô¦ó¤º®e¡C¤ñ¤è»¡¡A¤@ºØScript¥i¯àªð¦^³r¸¹¤À¹jªº­È¡A¥t¤@ºØ«h¨Ï¥ÎºÞ¹D²Å¡]§Y | ¦r¤¸¡^¤À¹jªº­È¡AÁÙ¦³¤@ºØ«hªð¦^ªø¤å¦r¦r¦ê¡C¦ó¥h¦ó±q¥Ñ¦øªA¾¹¨M©w¡C

¦b¥»¤å¨Ï¥Îªº¨Ò¤l¤¤¡A¦øªA¾¹ªð¦^«È¤áªº¤W¤@­Ó­q³æ©M«È¤á¦ì§}¡A¤¤¶¡¥ÎºÞ¹D²Å¤À¶}¡CµM«á¨Ï¥Î­q³æ©M¦ì§}³]©wªí³æ¤¤ªº¤¸¯À­È¡A²M³æ 16 µ¹¥X¤F§ó·sÅã¥Ü¤º®eªºµ{¦¡½X¡C



²M³æ 16. ³B²z¦øªA¾¹¦^À³

  function updatePage() {

     if (request.readyState == 4) {

       if (request.status == 200) {

         var response = request.responseText.split("|");

         document.getElementById("order").value = response[0];

         document.getElementById("address").innerHTML =

           response[1].replace(/\n/g, "
");

       } else

         alert("status is " + request.status);

     }

   }

 

­º¥ý¡A±o¨ì responseText ¨Ã¨Ï¥Î JavaScript split() ¤èªk±qºÞ¹D²Å¤À¶}¡C±o¨ìªº°}¦C©ñ¨ì response ¤¤¡C°}¦C¤¤ªº²Ä¤@­Ó­È ¡X¡X ¤W¤@­Ó­q³æ ¡X¡X ¥Î response[0] ¦s¨ú¡A³Q³]©w¬° ID ¬° ¡§order¡¨ ªºÄæ¦ìªº­È¡C²Ä¤G­Ó­È response[1]¡A§Y«È¤á¦ì§}¡A«h»Ý­n§ó¦h¤@ÂI³B²z¡C¦]¬°¦ì§}¤¤ªº¦æ¥Î¤@¯ëªº¦æ¤À¹j²Å¸¹¡]¡§\n¡¨¦r¤¸¡^¤À¹j¡Aµ{¦¡½X¤¤»Ý­n¥Î XHTML ­·®æªº¦æ¤À¹j²Å¸¹ <br /> ¨Ó¥N´À¡C´À´«¹Lµ{¨Ï¥Î replace() ¨ç¼Æ©M¥¿«h¹Bºâ¦¡§¹¦¨¡C³Ì«á¡A­×§ï«áªº¤å¦r§@¬° HTML ªí³æ div ¤¤ªº¤º³¡ HTML¡Cµ²ªG´N¬Oªí³æ¬ðµM¥Î«È¤á¸ê°T§ó·s¤F¡A¦p¹Ï 4 ©Ò¥Ü¡C

Top



¹Ï 4. ¦¬¨ì«È¤á¸ê®Æ«áªº Break Neck ªí³æ

¡@

µ²§ô¥»¤å¤§«e¡A§ÚÁÙ­n¤¶²Ð XMLHttpRequest ªº¥t¤@­Ó­«­nÄÝ©Ê responseXML¡C¦pªG¦øªA¾¹¿ï¾Ü¨Ï¥Î XML ¦^À³«h¸ÓÄݩʥ]§t¡]¤]³\±z¤w¸g²q¨ì¡^XML ¦^À³¡C³B²z XML ¦^À³©M³B²z´¶³q¤å¦r¦³«Ü¤j¤£¦P¡A¯A¤Î¨ì¸ÑªR¡B¤å¥óª«¥ó¼Ò«¬¡]DOM¡^©M¨ä¥L¤@¨Ç°ÝÃD¡C«á­±ªº¤å³¹¤¤±N¶i¤@¨B¤¶²Ð XML¡C¦ý¬O¦]¬° responseXML ³q±`©M responseText ¤@°_°Q½×¡A³oùئ³¥²­n´£¤@´£¡C¹ï©ó«Ü¦h²³æªº Ajax À³¥Îµ{¦¡ responseText ´N°÷¤F¡A¦ý¬O±z«Ü§Ö´N·|¬Ý¨ì³z¹L Ajax À³¥Îµ{¦¡¤]¯à«Ü¦n¦a³B²z XML¡C

 µ²§ô»y

±z¥i¯à¹ï XMLHttpRequest ·P¨ì¦³ÂI¹½­Â¤F¡A§Ú«Ü¤Ö¬Ý¨ì¤@¾ã½g¤å³¹°Q½×¤@­Óª«¥ó¡A¯S§O¬O³oºØÂ²³æªºª«¥ó¡C¦ý¬O±z±N¦b¨Ï¥Î Ajax ½s¼gªº¨C­Ó­¶­±©MÀ³¥Îµ{¦¡¤¤¤Ï´_¨Ï¥Î¸Óª«¥ó¡C©Z¥Õ¦a»¡¡AÃö©ó XMLHttpRequest ÁÙ¯u¦³¤@¨Ç¥i»¡ªº¤º®e¡C¤U¤@´Á¤å³¹¤¤±N¤¶²Ð¦p¦ó¦b½Ð¨D¤¤¨Ï¥Î POST ¤Î GET¡A¨Ó³]©w½Ð¨D¤¤ªº¤º®eÀY³¡©M±q¦øªA¾¹¦^À³Åª¨ú¤º®eÀY³¡¡A²z¸Ñ¦p¦ó¦b½Ð¨D/¦^À³¼Ò«¬¤¤½s½X½Ð¨D©M³B²z XML¡C

¦A©¹«á§Ú­Ì±N¤¶²Ð±`¨£ Ajax ¤u¨ã½c¡C³o¨Ç¤u¨ã½c¹ê»Ú¤WÁôÂäF¥»¤å©Ò­zªº«Ü¦h²Ó¸`¡A¨Ï±o Ajax µ{¦¡¶}µo§ó®e©ö¡C±z¤]³\·|·Q¡A¬JµM¦³³o»ò¦h¤u¨ã½c¬°¦óÁÙ­n¹ï©³¼hªº²Ó¸`½s½X¡Cµª®×¬O¡A¦pªG¤£ª¾¹DÀ³¥Îµ{¦¡¦b°µ¤°»ò¡A´N«ÜÃøµo²{À³¥Îµ{¦¡¤¤ªº°ÝÃD¡C

¦]¦¹¤£­n©¿²¤³o¨Ç²Ó¸`©ÎªÌ²³æ¦aÂsÄý¤@¤U¡A¦pªG«K±¶µØÄRªº¤u¨ã½c¥X²{¤F¿ù»~¡A±z´N¤£¥²¼¸ÀY©ÎªÌµo°e¶l¥ó½Ð¨D¤ä´©¤F¡C¦pªGÁA¸Ñ¦p¦óª½±µ¨Ï¥Î XMLHttpRequest¡A´N·|µo²{«Ü®e©ö½Õ¸Õ©M¸Ñ¨M³Ì©_©Çªº°ÝÃD¡C¥u¦³Åý¨ä¸Ñ¨M±zªº°ÝÃD¡A¤u¨ã½c¤~¬O¦nªF¦è¡C

¦]¦¹½Ð¼ô±x XMLHttpRequest §a¡C¨Æ¹ê¤W¡A¦pªG±z¦³¨Ï¥Î¤u¨ã½cªº Ajax µ{¦¡½X¡A¥i¥H¹Á¸Õ¨Ï¥Î XMLHttpRequest ª«¥ó¤Î¨äÄݩʩM¤èªk­«·s§ï¼g¡C³o¬O¤@ºØ¤£¿ùªº½m²ß¡A¥i¥HÀ°§U±z§ó¦n¦a²z¸Ñ¨ä¤¤ªº­ì²z¡C

¤U¤@´Á¤å³¹¤¤±N¶i¤@¨B°Q½×¸Óª«¥ó¡A±´°Q¥¦ªº¤@¨Ç§ó¦³½ìªºÄݩʡ]¦p responseXML¡^¡A¥H¤Î¦p¦ó¨Ï¥Î POST ½Ð¨D©M¥H¤£¦Pªº®æ¦¡µo°e¸ê®Æ¡C½Ð¶}©l½s¼gµ{¦¡½X§a¡A¤@­Ó¤ë«á§Ú­Ì¦AÄ~Äò°Q½×¡C

Top

¡@

°Ñ¦Ò¸ê®Æ

¾Ç²ß


Àò±o²£«~©M§Þ³N

  • Elisabeth Freeman¡BEric Freeman ©M Brett McLaughlin ¦XµÛªº Head Rush Ajax¡]2005 ¦~ 2 ¤ë¡AO'Reilly Media, Inc.¡^¥H Head First ­·®æ±N¥»¤å¤¤©Ò­zªº¤º®eÄé¿é¨ì±zªºÀY¸£¤¤¡C
  • Java and XML, Second Edition¡]Brett McLaughlin¡A2001 ¦~ 8 ¤ë¡AO'Reilly Media, Inc.¡^¥]¬A§@ªÌÃö©ó XHTML ©M XML Âà´«ªº°Q½×¡C
  • JavaScript: The Definitive Guide¡]David Flanagan¡A2001 ¦~ 11 ¤ë¡AO'Reilly Media, Inc.¡^¸Ô²Ó¤¶²Ð¤F¦p¦ó¨Ï¥Î JavaScript¡B°ÊºAºô­¶¡A²Ä¤Gª©¼W¥[¤FÃö©ó Ajax ªº¨â³¹¡C
  • Head First HTML with CSS & XHTML¡]Elizabeth ©MEric Freeman¡A2005 ¦~ 12 ¤ë¡AO'Reilly Media, Inc.¡^¬O¾Ç²ß XHTML¡BCSS ¥H¤Î¦p¦ó±N¨âªÌµ²¦X°_¨Óªº§¹¾ã°Ñ¦Ò¡C


°Q½×

Ãö©ó§@ªÌ

Brett McLaughlin ±q Logo ®É¥N´N¶}©l¨Ï¥Î¹q¸£¡C¡]ÁÙ°O±o¨º­Ó¤p¤T¨¤¶Ü¡H¡^ªñ¦~¨Ó¡A¥L¤w¸g¦¨¬° Java ©M XML ªÀ°Ï³ÌµÛ¦Wªº§@ªÌ©Mµ{¦¡³]­p®v¤§¤@¡C¥L´¿¸g¦b Nextel Communications ¹ê²{¹L½ÆÂøªº¥ø·~¨t²Î¡A¦b Lutris Technologies ½s¼g¹LÀ³¥Î¦øªA¾¹¡A³Ìªñ¦b O'Reilly Media, Inc. Ä~Äò¼¶¼g©M½s¿è³o¤è­±ªº¹Ï®Ñ¡CBrett §Y±N¥Xª©ªº·s®Ñ Head Rush Ajax¡A©MºZ¾P®Ñ§@ªÌ Eric »P Beth Freeman ¤@°_¬° Ajax ±a¨Ó¤FÀò¼úªº­²©R©Ê Head First ¤èªk¡C³ÌªñªºµÛ§@ Java 1.5 Tiger: A Developer's Notebook ¬OÃö©ó Java §Þ³N³Ì·sª©¥»ªº²Ä¤@¥»®Ñ¡A¸g¨åªº Java and XML ¤´µM¬O¦b Java »y¨¥¤¤¨Ï¥Î XML §Þ³NªºÅv«ÂµÛ§@¡C

¡@

Top

Lotus Notes §Þ³N¤À¨É

¡@

¦p¦ó¦bWeb¤W¥i¨Ì¾Ú¯¸§O¦WºÙ»PUserName¨Ó±±¨î¤W¶Çªºªþ¥[ÀÉ®×?

¬Û«H¦U¦ì¦b¶}µoWrokflow¬yµ{ªí³æ®É,¤@©w·|¹J¨ì¤£ª¾¦p¦ó±±¨î¨C¤@¬yµ{¯¸©Ò¤W¶Çªþ¥[Àɮתº§R°£Åv­­ªº,¥»´Á´¼¾e¤À¨É³ø±N­n´£¨Ñ±z¤@­Ó½d¨Ò¨Ó¸Ñ¨M±zªº°ÝÃD,¦¹½d¨Ò¥i¥H«Ü®e©öÅý±z³z¹L°Ñ¼Æ¨Ó±±¨îÅv­­,¦]«Ø¥ß¦¹½d¨Òµ{¦¡¤§¨BÆJ¸û¬°ÁcÂø,¬G«ØÄ³ª½±µ¦Ü¥»¤½¥qºô¯¸¤U¸ü½d¨Ò¨Ó®M¥Î§Y¥i,¥H¤U»¡©ú¦¹½d¨Ò®M¥Î¦Ü±zAPªº¤èªk¡C

1.      ½Ð¥ý½Æ»s½d¨Ò¸ê®Æ®w¤¤ªº"SubFileUpload"°Æ®Mªí¦Ü±zªºAP¸ê®Æ®w¤¤.

2.      ½Ð¦b±z±ý®M¥Î¦¹¥\¯àªº®Mªí¤¤,¦b»Ý­n©ñ¸mªþ¥[Àɮתº¦ì¸m³B´¡¤J¤W­z°Æ®Mªí.

3.      ½Ð¦b¨BÆJ2®Mªíªº³Ì¤U¤è,´¡¤J¦p¤U¤§HTML»yªk(°O±o¼Ð°O¦¨HTML¤å¦r)

<DIV ID="last"></DIV>

¡@

4.      ½Ð¦b¨BÆJ2®MªíªºJS Header¤¤,´¡¤J¦p¤U¤§JavaScript»yªk:

var f = document.forms[0];

//ÁôÂêþ¥[ª«¥ó

hiddenNotesAttach();

if (WMAttEditMode=="1"){

           WriteFileUpload();

}

wmattachment("1","User01","0");  //¦¹functionªº°Ñ¼Æ½Ð¦Û¦æ­×§ï

DispAttachmentList();

5.      ½Ð¦b¨BÆJ2®Mªí¤¤«Ø¥ß¤@¨Ç´ú¸Õ«ö¶s,«ö¶sµ{¦¡¦p¤U:

wmattachment("1","User01","0");  //¦¹functionªº°Ñ¼Æ½Ð¦Û¦æ­×§ï

DispAttachmentList();

¡@

6.      °w¹ïwmattachment("1","User01","0") functionªº°Ñ¼Æ»¡©ú¦p¤U:

²Ä¤@­Ó°Ñ¼Æ(String):¯¸§O¦WºÙ©Î¬O¥N¸¹

²Ä¤G­Ó°Ñ¼Æ(String):¯¸§O¤§¨Ï¥ÎªÌ¦WºÙ

²Ä¤T­Ó°Ñ¼Æ(String):±±¨î§R°£Åv­­

"0":¥i¥H§R°£¥þ³¡

                                "1":¥u¯à§R°£¦Û¤v

                                "2":¥u¯à§R°£¦P¤@¯¸

                                     "3":Ãö³¬§R°£¥\¯à

¡@

7.  ¼v¹³¸ê·½DeleteFile.gif¤£­n§Ñ°O¤]­n¤@°_½Æ»s³á!!

8.  Web¤W´ú¸Õµe­±¦p¤U:

                           

µù:¦p¦³»Ý­n¥i¦Ü´¼¾e¬ì§Þºô¯¸¡]http://www.wmmate.com¡^¤U¸ü½d¨Ò¸ê®Æ®w¡C  

Top

ªñ´Á¹q¤l³ø¤º®e¹w§i

«áÄò³°Äò·|µo¦æ¬ÛÃö§Þ³Nªº¹q¤l³ø

¤º®e¹w§i¦p¤U:

Lotus Notes¨t²Î¾ã¦X&À³¥Î¤¶²Ð

  ¤º®e¬Û·íÂ×´I·q½Ð´Á«Ý...

Top


µù:¦p¤£·QÄ~Äò¦¬¨ì¥»¤½¥q¤§¹q¤l³ø©Î¬O­n¤¶²ÐªB¤Í­q¾\¹q¤l³ø½Ð¦Ü¥»¤½¥qºô¯¸½u¤W³]©w/­q¾\


´¼¾e¬ì§ÞªÑ¥÷¦³­­¤½¥q

Copyright 1999-2006     ª©Åv©Ò¦³ Âà¸ü¥²¨s

TEL:03-5326262       FAX:03-5344873        Email:support@wmmate.com