¡i²Ä0106´Á2006/11/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²Ä3³¡¤À: Ajax ¤¤ªº¶i¶¥½Ð¨D©M¦^À³

¡@

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

¡@

¡@

¥þ­±²z¸Ñ HTTP ªºª¬ºA¥N½X¡B´Nºüª¬ºA©M XMLHttpRequest ª«¥ó

¯Å§O: ªì¯Å

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

2006 ¦~ 3 ¤ë 23 ¤é

¹ï©ó«Ü¦h Web ¶}µo¤H­û¨Ó»¡¡A¥u»Ý­n«Ø¥ß²³æªº½Ð¨D¨Ã±µ¦¬Â²³æªº¦^À³§Y¥i¡F¦ý¬O¹ï©ó§Æ±æ´x´¤ Ajax ªº¶}µo¤H­û¨Ó»¡¡A¥²¶·­n¥þ­±²z¸Ñ HTTP ª¬ºA¥N½X¡B´Nºüª¬ºA©M XMLHttpRequest ª«¥ó¡C¦b¥»¤å¤¤¡ABrett McLaughlin ±N¦V±z¤¶²Ð¦UºØª¬ºA¥N½X¡A¨Ã®i¥ÜÂsÄý¾¹¦p¦ó¹ï¨ä¶i¦æ³B²z¡A¥»¤åÁÙµ¹¥X¤F¦b Ajax ¤¤¨Ï¥Îªº¤ñ¸û¤Ö¨£ªº HTTP ½Ð¨D¡C

¦b¥»¨t¦Cªº ¤W½g¤å³¹ ¤¤¡A§Ú­Ì±N¸Ô²Ó¤¶²Ð XMLHttpRequest ª«¥ó¡A¥¦¬O Ajax À³¥Îµ{¦¡ªº¤¤¤ß¡A­t³d³B²z¦øªA¾¹ºÝÀ³¥Îµ{¦¡©MScriptªº½Ð¨D¡A¨Ã³B²z±q¦øªA¾¹ºÝ¤¸¥óªð¦^ªº¸ê®Æ¡C¥Ñ©ó©Ò¦³ªº Ajax À³¥Îµ{¦¡³£­n¨Ï¥Î XMLHttpRequest ª«¥ó¡A¦]¦¹±z¥i¯à·|§Æ±æ¼ô±x³o­Óª«¥ó¡A±q¦Ó¯à°÷Åý Ajax °õ¦æ±o§ó¦n¡C

¦b¥»¤å¤¤¡A§Ú±N¦b¤W¤@½g¤å³¹ªº°ò¦¤W­«ÂI¤¶²Ð³o­Ó½Ð¨Dª«¥óªº 3 ­ÓÃöÁ䳡¤Àªº¤º®e¡G

  • HTTP ´Nºüª¬ºA
  • HTTP ª¬ºA¥N½X
  • ¥i¥H«Ø¥ßªº½Ð¨DÃþ«¬

³o¤T³¡¤À¤º®e³£¬O¦bºc³y¤@­Ó½Ð¨D®É©Ò­n¦Ò¼{ªº¦]¯À¡F¦ý¬O¤¶²Ð³o¨Ç¥DÃDªº¤º®e¤Ó¤Ö¤F¡CµM¦Ó¡A¦pªG±z¤£¶È¶È¬O·QÁA¸Ñ Ajax µ{¦¡¶}µoªº±`ÃÑ¡A¦Ó¬O§Æ±æÁA¸Ñ§ó¦h¤º®e¡A´N»Ý­n¼ô±x´Nºüª¬ºA¡Bª¬ºA¥N½X©M½Ð¨D¥»¨­ªº¤º®e¡C·íÀ³¥Îµ{¦¡¥X²{°ÝÃD®É ¡X¡X ³oºØ°ÝÃDÁ`¬O¦s¦b ¡X¡X ¨º»ò¦pªG¯à°÷¥¿½T²z¸Ñ´Nºüª¬ºA¡B¦p¦ó«Ø¥ß¤@­Ó HEAD ½Ð¨D©ÎªÌ 400 ªºª¬ºA¥N½Xªº½T¤Á§t¸q¡A´N¥i¥H¦b 5 ¤ÀÄÁ¤º´ú¸Õ¥X°ÝÃD¡A¦Ó¤£¬O¦b¦UºØ®À§é©M§x´b¤¤«×¹L 5 ­Ó¤p®É¡C

¤U­±Åý§Ú­Ì­º¥ý¨Ó¬Ý¤@¤U HTTP ´Nºüª¬ºA¡C

²`¤JÁA¸Ñ HTTP ´Nºüª¬ºA

±zÀ³¸ÓÁÙ°O±o¦b¤W¤@½g¤å³¹¤¤ XMLHttpRequest ª«¥ó¦³¤@­Ó¦W¬° readyState ªºÄݩʡC³o­ÓÄݩʽT«O¦øªA¾¹¤w¸g§¹¦¨¤F¤@­Ó½Ð¨D¡A³q±`·|¨Ï¥Î¤@­Ó¦^¶Ç¨ç¼Æ±q¦øªA¾¹¤¤Åª¥X¸ê®Æ¨Ó§ó·s Web ªí³æ©Î­¶­±ªº¤º®e¡C²M³æ 1 µ¹¥X¤F¤@­Ó²³æªº½d¨Ò¡]³o¤]¬O¥»¨t¦Cªº¤W¤@½g¤å³¹¤¤ªº¤@­Ó½d¨Ò ¡X¡X ½Ð°Ñ¨£ °Ñ¦Ò¸ê®Æ¡^¡C

 

XMLHttpRequest ©Î XMLHttp¡G

Microsoft™ ©M Internet Explorer ¨Ï¥Î¤F¤@­Ó¦W¬° XMLHttp ªºª«¥ó¡A¦Ó¤£¬O XMLHttpRequest ª«¥ó¡A¦Ó Mozilla¡BOpera¡BSafari ©M ¤j³¡¤À«D Microsoft ÂsÄý¾¹³£¨Ï¥Îªº¬O«áªÌ¡C¬°¤F²³æ©Ê°_¨£¡A§Ú±N³o¨â­Óª«¥ó³£Â²³æ¦aºÙ¬° XMLHttpRequest¡C³o¬J²Å¦X§Ú­Ì¦b Web ¤W¬Ý¨ìªº±¡ªp¡A¤S²Å¦X Microsoft ¦b Internet Explorer 7.0 ¤¤¨Ï¥Î XMLHttpRequest §@¬°½Ð¨D¹ï¶Hªº·N¹Ï¡C¡]¦³Ãö³o­Ó°ÝÃDªº§ó¦h¤º®e¡A½Ð°Ñ¨£ ²Ä 2 ³¡¤À¡C¡^

 ²M³æ1. ¦b¦^¶Ç¨ç¼Æ¤¤³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, "<br />");

     } else

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

   }

 }

 

³oÅãµM¬O´Nºüª¬ºA³Ì±`¨£¡]¤]¬O³Ì²³æ¡^ªº¥Îªk¡C¥¿¦p±z±q¼Æ¦ì "4" ¤¤¥i¥H¬Ý¥Xªº¤@¼Ë¡AÁÙ¦³¨ä¥L´X­Ó´Nºüª¬ºA¡]±z¦b¤W¤@½g¤å³¹¤¤¤]¬Ý¨ì¹L³o­Ó²M³æ ¡X¡X ½Ð°Ñ¨£ °Ñ¦Ò¸ê®Æ¡^¡G

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

¦pªG±z§Æ±æ¤£¶È¶È¬OÁA¸Ñ Ajax µ{¦¡¶}µoªº°ò¥»ª¾ÃÑ¡A¨º»ò´N¤£¦ý»Ý­nª¾¹D³o¨Çª¬ºA¡AÁA¸Ñ³o¨Çª¬ºA¬O¦ó®É¥X²{ªº¡A¥H¤Î¦p¦ó¨Ó¨Ï¥Î³o¨Çª¬ºA¡C­º¥ý¡A±z»Ý­n¾Ç²ß¦b¨CºØ´Nºüª¬ºA¤U¥i¯à¸I¨ìªº¬O­þºØ½Ð¨Dª¬ºA¡C¤£©¯ªº¬O¡A³o¤@ÂI¨Ã¤£ª½Æ[¡A¦Ó¥B·|¯A¤Î´XºØ¯S®íªº±¡ªp¡C

Top

¡@

ÁôÂôNºüª¬ºA

²Ä¤@ºØ´Nºüª¬ºAªº¯SÂI¬O readyState Äݩʬ° 0¡]readyState == 0¡^¡Aªí¥Ü¥¼ªì©l¤Æª¬ºA¡C¤@¥¹¹ï½Ð¨Dª«¥ó¨Ï¥Î open() ¤§«á¡A³o­ÓÄݩʴN³Q³]©w¬° 1¡C¥Ñ©ó±z³q±`³£¬O¦b¤@¹ï½Ð¨D¶i¦æªì©l¤Æ¤§«á´N¥ß§Y¨Ï¥Î open()¡A¦]¦¹«Ü¤Ö·|¬Ý¨ì readyState == 0 ªºª¬ºA¡C¥t¥~¡A¥¼ªì©l¤Æªº´Nºüª¬ºA¦b¹ê»ÚªºÀ³¥Îµ{¦¡¤¤¬O¨S¦³¯u¥¿ªº¥Î³Bªº¡C

¤£¹L¬°¤Fº¡¨¬§Ú­Ìªº¿³½ì¡A½Ð°Ñ¨£ ²M³æ 2 ªº¤º®e¡A¨ä¤¤Åã¥Ü¤F¦p¦ó¦b readyState ³Q³]©w¬° 0 ®É¨ÓÀò¨ú³oºØ´Nºüª¬ºA¡C


²M³æ 2. Àò¨ú 0 ´Nºüª¬ºA

  function getSalesData() {

     // Create a request object

     createRequest();                             

     alert("Ready state is: " + request.readyState); 

     // Setup (initialize) the request

     var url = "/boards/servlet/UpdateBoardSales";

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

     request.onreadystatechange = updatePage;

     request.send(null);

   }

¦b³o­Ó²³æªº½d¨Ò¤¤¡AgetSalesData() ¬O Web ­¶­±¨Ï¥Î¨Ó±Ò°Ê½Ð¨D¡]¨Ò¦pÂIÀ»¤@­Ó«ö¶s®É¡^©Ò¨Ï¥Îªº¨ç¼Æ¡Cª`·N±z¥²¶·¦b¨Ï¥Î open()¤§«e ¨Ó¬d¬Ý´Nºüª¬ºA¡C¹Ï 1 µ¹¥X¤F°õ¦æ³o­ÓÀ³¥Îµ{¦¡ªºµ²ªG¡C


¹Ï 1. ´Nºüª¬ºA 0

ÅãµM¡A³o¨Ã¤£¯à¬°±z±a¨Ó¦h¤Ö¦n³B¡F»Ý­n½T«O ©|¥¼ ¨Ï¥Î open() ¨ç¼Æªº±¡ªp«Ü¤Ö¡C¦b¤j³¡¤À Ajax µ{¦¡¶}µoªº¯u¹ê±¡ªp¤¤¡A³oºØ´Nºüª¬ºAªº°ß¤@¥Îªk´N¬O¨Ï¥Î¬Û¦Pªº XMLHttpRequest ª«¥ó¦b¦h­Ó¨ç¼Æ¤§¶¡«Ø¥ß¦h­Ó½Ð¨D¡C¦b³oºØ¡]¤£±`¨£ªº¡^±¡ªp¤¤¡A±z¥i¯à·|¦b«Ø¥ß·s½Ð¨D¤§«e§Æ±æ½T«O½Ð¨Dª«¥ó¬O³B©ó¥¼ªì©l¤Æª¬ºA¡]readyState == 0¡^¡C³o¹ê»Ú¤W¬O­n½T«O¥t¥~¤@­Ó¨ç¼Æ¨S¦³¦P®É¨Ï¥Î³o­Óª«¥ó¡C 

·í 0 µ¥©ó 4 ®É

¦b¦h­Ó JavaScript ¨ç¼Æ³£¨Ï¥Î¬Û¦Pªº½Ð¨Dª«¥ó®É¡A±z»Ý­nÀˬd´Nºüª¬ºA 0 ¨Ó½T«O³o­Ó½Ð¨Dª«¥ó¨S¦³¥¿¦b¨Ï¥Î¡A³oºØ¾÷¨î·|²£¥Í°ÝÃD¡C¥Ñ©ó readyState == 4 ªí¥Ü¤@­Ó¤w§¹¦¨ªº½Ð¨D¡A¦]¦¹±z¸g±`·|µo²{¨º¨Ç¥Ø«e¨S¦b¨Ï¥Îªº³B©ó´Nºüª¬ºAªº½Ð¨Dª«¥ó¤´µM³Q³]©w¦¨¤F 4 ¡X¡X ³o¬O¦]¬°±q¦øªA¾¹ªð¦^¨Óªº¸ê®Æ¤w¸g¨Ï¥Î¹L¤F¡A¦ý¬O±q¥¦­Ì³Q³]©w¬°´Nºüª¬ºA¤§«á´N¨S¦³¶i¦æ¥ô¦óÅܤơC¦³¤@­Ó¨ç¼Æ abort() ·|­«·s³]©w½Ð¨Dª«¥ó¡A¦ý¬O³o­Ó¨ç¼Æ«o¤£¬O¯u¥¿¬°¤F³o­Ó¥Øªº¦Ó¨Ï¥Îªº¡C¦pªG±z ¥²¶· ¨Ï¥Î¦h­Ó¨ç¼Æ¡A³Ì¦n¬O¬°¨C­Ó¨ç¼Æ³£«Ø¥ß¨Ã¨Ï¥Î¤@­Ó¨ç¼Æ¡A¦Ó¤£¬O¦b¦h­Ó¨ç¼Æ¤§¶¡¦@¥Î¬Û¦Pªºª«¥ó¡C

 ¬d¬Ý¥¿¦b³B²zªº½Ð¨Dªº´Nºüª¬ºA

°£¤F 0 ´Nºüª¬ºA¤§¥~¡A½Ð¨Dª«¥óÁٻݭn¨Ì¦¸¸g¾ú¨å«¬ªº½Ð¨D©M¦^À³ªº¨ä¥L´XºØ´Nºüª¬ºA¡A³Ì«á¤~¥H´Nºüª¬ºA 4 ªº§Î¦¡µ²§ô¡C³o´N¬O¬°¤°»ò±z¦b¤j³¡¤À¦^¶Ç¨ç¼Æ¤¤³£¥i¥H¬Ý¨ì if (request.readyState == 4) ³o¦æµ{¦¡½X¡F¥¦½T«O¦øªA¾¹¤w¸g§¹¦¨¹ï½Ð¨Dªº³B²z¡A²{¦b¥i¥H¦w¥þ¦a§ó·s Web ­¶­±©Î®Ú¾Ú±q¦øªA¾¹ªð¦^¨Óªº¸ê®Æ¨Ó¶i¦æ¾Þ§@¤F¡C

­n¬d¬Ý³oºØª¬ºAµo¥Íªº¹Lµ{«D±`²³æ¡C¦pªG´Nºüª¬ºA¬° 4¡A§Ú­Ì¤£¶È­n°õ¦æ¦^¶Ç¨ç¼Æ¤¤ªº¥N½X¡A¦Ó¥BÁÙ­n¦b¨C¦¸¨Ï¥Î¦^¶Ç¨ç¼Æ®É³£¿é¥X´Nºüª¬ºA¡C ²M³æ 3 µ¹¥X¤F¤@­Ó¹ê²{³oºØ¥\¯àªº½d¨Ò¡C

Top

¡@


²M³æ 3. ¬d¬Ý´Nºüª¬ºA

    function updatePage() {

     // Output the current ready state

     alert("updatePage() called with ready state of " + request.readyState);

   }

 ¦pªG±z¤£½T©w¦p¦ó°õ¦æ³o­Ó¨ç¼Æ¡A´N»Ý­n«Ø¥ß¤@­Ó¨ç¼Æ¡AµM«á¦b Web ­¶­±¤¤¨Ï¥Î³o­Ó¨ç¼Æ¡A¨ÃÅý¥¦¦V¦øªA¾¹ºÝªº¤¸¥óµo°e¤@­Ó½Ð¨D¡]¨Ò¦p ²M³æ 2 µ¹¥Xªº¨ç¼Æ¡A©Î¥»¨t¦C¤å³¹ªº²Ä 1 ³¡¤À©M²Ä 2 ³¡¤À¤¤µ¹¥Xªº½d¨Ò¡^¡C½T«O¦b«Ø¥ß½Ð¨D®É¡A±N¦^¶Ç¨ç¼Æ³]©w¬° updatePage()¡F­n¹ê²{³oºØ³]©w¡A¥i¥H±N½Ð¨Dª«¥óªº onreadystatechange Äݩʳ]©w¬° updatePage()¡C

³o¬qµ{¦¡½X´N¬O onreadystatechange ·N¸qªº¤@­Ó½T¤Á®i¥Ü ¡X¡X ¨C¦¸½Ð¨Dªº´Nºüª¬ºAµo¥ÍÅܤƮɡA´N¨Ï¥Î updatePage()¡AµM«á§Ú­Ì´N¥i¥H¬Ý¨ì¤@­Óĵ§i¤F¡C¹Ï 2 µ¹¥X¤F¤@­Ó¨Ï¥Î³o­Ó¨ç¼Æªº½d¨Ò¡A¨ä¤¤´Nºüª¬ºA¬° 1¡C


¹Ï 2. ´Nºüª¬ºA 1

±z¥i¥H¦Û¤v¹Á¸Õ°õ¦æ³o¬qµ{¦¡½X¡C±N¨ä©ñ¤J Web ­¶­±¤¤¡AµM«á±Ò°Ê¨Æ¥ó³B²zµ{¦¡¡]«ö¤U«ö¶s¡A¦bÄæ¦ì¤§¶¡«ö tab Áä¤Á´«µJÂI¡A©ÎªÌ¨Ï¥Î³]©wªº¥ô¦ó¤èªk¨ÓIJµo½Ð¨D¡^¡C³o­Ó¦^¶Ç¨ç¼Æ·|°õ¦æ¦h¦¸ ¡X¡X ¨C¦¸´Nºüª¬ºA³£·|§ïÅÜ ¡X¡X ±z¥i¥H¬Ý¨ì¨C­Ó´Nºüª¬ºAªºÄµ§i¡C³o¬O¸òÂܽШD©Ò¸g¾úªº¦U­Ó¶¥¬qªº³Ì¦n¤èªk¡C

ÂsÄý¾¹ªº¤£¤@­P©Ê

¦b¹ï³o­Ó¹Lµ{¦³¤@­Ó°ò¥»ªºÁA¸Ñ¤§«á¡A½Ð¸ÕµÛ±q´X­Ó¤£¦PªºÂsÄý¾¹¤¤³s½u±zªº­¶­±¡C±zÀ³¸Ó·|ª`·N¨ì¦U­ÓÂsÄý¾¹¦p¦ó³B²z³o¨Ç´Nºüª¬ºA¨Ã¤£¤@­P¡C¨Ò¦p¡A¦b Firefox 1.5 ¤¤¡A±z·|¬Ý¨ì¥H¤U´Nºüª¬ºA¡G

  • 1
  • 2
  • 3
  • 4

³o¨Ã¤£©_©Ç¡A¦]¬°¨C­Ó½Ð¨Dª¬ºA³£¦b³oùتí¥Ü¥X¨Ó¤F¡CµM¦Ó¡A¦pªG±z¨Ï¥Î Safari ¨Ó³s½u¬Û¦PªºÀ³¥Îµ{¦¡¡A´NÀ³¸Ó¬Ý¨ì ¡X¡X ©ÎªÌ¬Ý¤£¨ì ¡X¡X ¤@¨Ç¦³½ìªº¨Æ±¡¡C¤U­±¬O¦b Safari 2.0.1 ¤¤¬Ý¨ìªºª¬ºA¡G

  • 2
  • 3
  • 4

Safari ¹ê»Ú¤W§â²Ä¤@­Ó´Nºüª¬ºAµ¹¥á±ó¤F¡A¤]¨Ã¨S¦³¤°»ò©úÅ㪺­ì¦]»¡©ú¬°¤°»ò­n³o¼Ë°µ¡F¤£¹L³o´N¬O Safari ªº¤u§@¤è¦¡¡C³oÁÙ»¡©ú¤F¤@­Ó­«­nªº°ÝÃD¡G¾¨ºÞ¦b¨Ï¥Î¦øªA¾¹¤Wªº¸ê®Æ¤§«e½T«O½Ð¨Dªºª¬ºA¬° 4 ¬O¤@­Ó¦n¥D·N¡A¦ý¬O¨Ì¿à©ó¨C­Ó¹L´ç´Á´Nºüª¬ºA½s¼gªºµ{¦¡½Xªº½T·|¦b¤£¦PªºÂsÄý¾¹¤W±o¨ì¤£¦Pªºµ²ªG¡C

Top

¡@

¨Ò¦p¡A¦b¨Ï¥Î Opera 8.5 ®É¡A©ÒÅã¥Üªº´Nºüª¬ºA±¡ªp´N§ó¥[ÁV¿|¤F¡G

  • 3
  • 4

³Ì«á¡AInternet Explorer ·|Åã¥Ü¦p¤Uª¬ºA¡G

  • 1
  • 2
  • 3
  • 4

¦pªG±z¸I¨ì½Ð¨D¤è­±ªº°ÝÃD¡A³o´N¬O¥Î¨Óµo²{°ÝÃDªº ­º­n¤§³B¡C³Ì¦nªº¤è¦¡¬O¦b Internet Explorer ©M Firefox ³£¶i¦æ¤@¤U´ú¸Õ ¡X¡X ±z·|¬Ý¨ì©Ò¦³³o 4 ºØª¬ºA¡A¨Ã¥i¥HÀˬd½Ð¨Dªº¨C­Óª¬ºA©Ò³Bªº±¡ªp¡C

±µ¤U¨Ó§Ú­Ì¦A¨Ó¬Ý¤@¤U¦^À³ºÝªº±¡ªp¡C

Åã·LÃè¤Uªº¦^À³¸ê®Æ

¤@¥¹§Ú­Ì²z¸Ñ¦b½Ð¨D¹Lµ{¤¤µo¥Íªº¦U­Ó´Nºüª¬ºA¤§«á¡A±µ¤U¨Ó´N¥i¥H¨Ó¬Ý¤@¤U XMLHttpRequest ª«¥óªº¥t¥~¤@­Ó¤è­±¤F ¡X¡X responseText ÄݩʡC¦^·Q¤@¤U¦b¤W¤@½g¤å³¹¤¤§Ú­Ì¤¶²Ð¹Lªº¤º®e¡A´N¥i¥Hª¾¹D³o­ÓÄݩʥΨӱq¦øªA¾¹¤WÀò¨ú¸ê®Æ¡C¤@¥¹¦øªA¾¹§¹¦¨¹ï½Ð¨Dªº³B²z¤§«á¡A´N¥i¥H±N¦^À³½Ð¨D¸ê®Æ©Ò»Ý­nªº¥ô¦ó¸ê®Æ©ñ¨ì½Ð¨Dªº responseText ¤¤¤F¡CµM«á¦^¶Ç¨ç¼Æ´N¥i¥H¨Ï¥Î³o¨Ç¸ê®Æ¡A¦p ²M³æ 1 ©M ²M³æ 4 ©Ò¥Ü¡C


²M³æ 4. ¨Ï¥Î¦øªA¾¹¤Wªð¦^ªº¦^À³

    function updatePage() {

     if (request.readyState == 4) {

       var newTotal = request.responseText;

       var totalSoldEl = document.getElementById("total-sold");

       var netProfitEl = document.getElementById("net-profit");

       replaceText(totalSoldEl, newTotal); 

       /* ¹Ï out the new net profit */

       var boardCostEl = document.getElementById("board-cost");

       var boardCost = getText(boardCostEl);

       var manCostEl = document.getElementById("man-cost");

       var manCost = getText(manCostEl);

       var profitPerBoard = boardCost - manCost;

       var netProfit = profitPerBoard * newTotal; 

       /* Update the net profit on the sales form */

       netProfit = Math.round(netProfit * 100) / 100;

       replaceText(netProfitEl, netProfit);

     }

 ²M³æ 1 ¬Û·í²³æ¡F²M³æ 4 µy·L¦³ÂI½ÆÂø¡A¦ý¬O¥¦­Ì¦b¶}©l®É³£­nÀˬd´Nºüª¬ºA¡A¨ÃÀò¨ú responseText Äݩʪº­È¡C

Top

¡@

¬d¬Ý½Ð¨Dªº¦^À³¤å¦r

»P´Nºüª¬ºAÃþ¦ü¡AresponseText Äݩʪº­È¦b¾ã­Ó½Ð¨Dªº¥Í©R¶g´Á¤¤¤]·|µo¥ÍÅܤơC­n¬d¬Ý³oºØÅܤơA½Ð¨Ï¥Î¦p ²M³æ 5 ©Ò¥Üªºµ{¦¡½X¨Ó´ú¸Õ½Ð¨Dªº¦^À³¤å¦r¡A¥H¤Î¥¦­Ìªº´Nºüª¬ºA¡C


²M³æ 5. ´ú¸Õ responseText ÄÝ©Ê

    function updatePage() {

     // Output the current ready state

     alert("updatePage() called with ready state of " + request.readyState +

           " and a response text of '" + request.responseText + "'");

     }

²{¦b¦bÂsÄý¾¹¤¤¥´¶} Web À³¥Îµ{¦¡¡A¨Ã±Ò°Ê±zªº½Ð¨D¡C­n§ó¦n¦a¬Ý¨ì³o¬qµ{¦¡½Xªº®ÄªG¡A½Ð¨Ï¥Î Firefox ©Î Internet Explorer¡A¦]¬°³o¨â­ÓÂsÄý¾¹³£¥i¥H³ø§i¥X½Ð¨D¹Lµ{¤¤©Ò¦³¥i¯àªº´Nºüª¬ºA¡C¨Ò¦p¦b´Nºüª¬ºA 2 ¤¤¡A´N¨S¦³©w¸q responseText ¡]½Ð°Ñ¨£ ¹Ï 3¡^¡F¦pªG JavaScript ±±¨î»O¤]¤w¸g¥´¶}¤F¡A±z´N·|¬Ý¨ì¤@­Ó¿ù»~¡C


¹Ï 3. ´Nºüª¬ºA¬° 2 ªº¦^À³¤å¦r

¤£¹L¦b´Nºüª¬ºA 3 ¤¤¡A¦øªA¾¹¤w¸g¦b responseText Äݩʤ¤©ñ¤W¤F¤@­Ó­È¡A¦Ü¤Ö¦b³o­Ó½d¨Ò¤¤¬O³o¼Ë¡]½Ð°Ñ¨£ ¹Ï 4¡^¡C


¹Ï 4. ´Nºüª¬ºA¬° 3 ªº¦^À³¤å¦r

±z·|¬Ý¨ì´Nºüª¬ºA¬° 3 ªº¦^À³¦b¨C­ÓScript¡B¨C­Ó¦øªA¾¹¬Æ¦Ü¨C­ÓÂsÄý¾¹¤W³£¬O¤£¤@¼Ëªº¡C¤£¹L¡A³o¦b´ú¸ÕÀ³¥Îµ{¦¡¤¤¨ÌµM¬O«D±`¦³¥Îªº¡C

Top

¡@

Àò¨ú¦w¥þ¸ê®Æ

©Ò¦³ªº¤å¥ó©M³W½d³£±j½Õ¡A¥u¦³¦b´Nºüª¬ºA¬° 4 ®É¸ê®Æ¤~¥i¥H¦w¥þ¨Ï¥Î¡C¬Û«H§Ú¡A·í´Nºüª¬ºA¬° 3 ®É¡A±z«Ü¤Ö¯à§ä¨ìµLªk±q responseText ÄÝ©ÊÀò¨ú¸ê®Æªº±¡ªp¡CµM¦Ó¡A¦bÀ³¥Îµ{¦¡¤¤±N¦Û¤vªºÅÞ¿è¨Ì¿à©ó´Nºüª¬ºA 3 ¥i¤£¬O¤°»ò¦n¥D·N ¡X¡X ¤@¥¹±z½s¼g¤F¨Ì¿à©ó´Nºüª¬ºA 3 ªº§¹¾ã¸ê®Æªºµ{¦¡½X¡A´X¥G´N­n¦Û¤v¨Ó­t³d·í®Éªº¸ê®Æ¤£§¹¾ã°ÝÃD¤F¡C

¤ñ¸û¦nªº°µªk¬O¦V¨Ï¥ÎªÌ´£¨Ñ¤@¨Ç¦^õX¡A»¡©ú¦b³B©ó´Nºüª¬ºA 3 ®É¡A«Ü§Ö´N·|¦³¦^À³¤F¡C¾¨ºÞ¨Ï¥Î alert() ¤§Ãþªº¨ç¼ÆÅãµM¤£¬O¤°»ò¦n¥D·N ¡X¡X ¨Ï¥Î Ajax µM«á¨Ï¥Î¤@­Óĵ§i¹ï¸Ü¤è¶ô¨Óªý¾×¨Ï¥ÎªÌÅãµM¬O¿ù»~ªº ¡X¡X ¤£¹L±z¥i¥H¦b´Nºüª¬ºAµo¥ÍÅܤƮɧó·sªí³æ©Î­¶­±¤¤ªº°ì¡C¨Ò¦p¡A¹ï©ó´Nºüª¬ºA 1 ¨Ó»¡­n±N¶i«×«ü¥Ü¾¹ªº¼e«×³]©w¬° 25%¡A¹ï©ó´Nºüª¬ºA 2 ¨Ó»¡­n±N¶i«×«ü¥Ü¾¹ªº¼e«×³]©w¬° 50%¡A¹ï©ó´Nºüª¬ºA 3 ¨Ó»¡­n±N¶i«×«ü¥Ü¾¹ªº¼e«×³]©w¬° 75%¡A·í´Nºüª¬ºA¬° 4 ®É±N¶i«×«ü¥Ü¾¹ªº¼e«×³]©w¬° 100%¡]§¹¦¨¡^¡C

·íµM¡A¥¿¦p±z¤w¸g¬Ý¨ìªº¤@¼Ë¡A³oºØ¤èªk«D±`Áo©ú¡A¦ý¥¦¬O¨Ì¿à©óÂsÄý¾¹ªº¡C¦b Opera ¤W¡A±z¥Ã»·³£¤£·|¬Ý¨ì«e¨â­Ó´Nºüª¬ºA¡A¦Ó¦b Safari ¤W«h¨S¦³²Ä¤@­Ó¡]1¡^¡C¥Ñ©ó³o­Ó­ì¦]¡A§Ú±N³o¬qµ{¦¡½X¯d§@½m²ß¡A¦Ó¨S¦³¦b¥»¤å¤¤¥]¬A¶i¨Ó¡C

²{¦bÀ³¸Ó¨Ó¬Ý¤@¤Uª¬ºA¥N½X¤F¡C

²`¤JÁA¸Ñ HTTP ª¬ºA¥N½X

¦³¤F´Nºüª¬ºA©M±z¦b Ajax µ{¦¡¶}µo§Þ³N¤¤¾Ç²ß¨ìªº¦øªA¾¹ªº¦^À³¡A±z´N¥i¥H¬° Ajax À³¥Îµ{¦¡¼W¥[¥t¥~¤@¯Å½ÆÂø©Ê¤F ¡X¡X ³o­n¨Ï¥Î HTTP ª¬ºA¥N½X¡C³o¨Ç¥N½X¹ï©ó Ajax ¨Ó»¡¨Ã¨S¦³¤°»ò·sÂA¡C±q Web ¥X²{¥H¨Ó¡A¥¦­Ì´N¤w¸g¦s¦b¤F¡C¦b Web ÂsÄý¾¹¤¤±z¥i¯à¤w¸g¬Ý¨ì¹L´X­Óª¬ºA¥N½X¡G

  • 401¡G¥¼¸g±ÂÅv
  • 403¡G¸T¤î
  • 404¡G¨S§ä¨ì

±z¥i¥H§ä¨ì§ó¦hªºª¬ºA¥N½X¡]§¹¾ã²M³æ½Ð°Ñ¨£ °Ñ¦Ò¸ê®Æ¡^¡C­n¬° Ajax À³¥Îµ{¦¡¥t¥~¼W¥[¤@¼h±±¨î©M¦^À³¡]¥H¤Î§ó¬°°·§§ªº¿ù»~³B²z¡^¾÷¨î¡A±z»Ý­n¾A·í¦a¬d¬Ý½Ð¨D©M¦^À³¤¤ªºª¬ºA¥N½X¡C

  • 200¡G¤@¤Á¥¿±`

¦b«Ü¦h Ajax À³¥Îµ{¦¡¤¤¡A±z±N¬Ý¨ì¤@­Ó¦^¶Ç¨ç¼Æ¡A¥¦­t³dÀˬd´Nºüª¬ºA¡AµM«áÄ~Äò§Q¥Î±q¦øªA¾¹¦^À³¤¤ªð¦^ªº¸ê®Æ¡A¦p ²M³æ 6 ©Ò¥Ü¡C


²M³æ 6. ©¿²¤ª¬ºA¥N½Xªº¦^¶Ç¨ç¼Æ

    function updatePage() {

     if (request.readyState == 4) {

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

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

       document.getElementById("address").innerHTML =

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

     }

   }

 ³o¹ï©ó Ajax µ{¦¡¶}µo¨Ó»¡ÃÒ©ú¬O¤@ºØµuµø¦Ó¿ù»~ªº¤èªk¡C¦pªGScript»Ý­n»{ÃÒ¡A¦Ó½Ð¨D«o¨S¦³´£¨Ñ¦³®ÄªºÃҮѡA¨º»ò¦øªA¾¹´N·|ªð¦^½Ñ¦p 403 ©Î 401 ¤§Ãþªº¿ù»~¥N½X¡CµM¦Ó¡A¥Ñ©ó¦øªA¾¹¹ï½Ð¨D¶i¦æ¤FÀ³µª¡A¦]¦¹´Nºüª¬ºA´N³Q³]©w¬° 4¡]§Y¨ÏÀ³µª¨Ã¤£¬O½Ð¨D©Ò´Á±æªº¤]¬O¦p¦¹¡^¡C³Ì²×¡A¨Ï¥ÎªÌ¨S¦³Àò±o¦³®Ä¸ê®Æ¡A·í JavaScript ¸Õ¹Ï¨Ï¥Î¤£¦s¦bªº¦øªA¾¹¸ê®Æ®É´N¥i¯à·|¥X²{ÄY­«ªº¿ù»~¡C

¥¦ªá¶O¤F³Ì¤pªº§V¤O¨Ó½T«O¦øªA¾¹¤£¦ý§¹¦¨¤F¤@­Ó½Ð¨D¡A¦Ó¥BÁÙªð¦^¤F¤@­Ó ¡§¤@¤Á¨}¦n¡¨ ªºª¬ºA¥N½X¡C³o­Ó¥N½X¬O "200"¡A¥¦¬O³z¹L XMLHttpRequest ª«¥óªº status Äݩʨӳø§iªº¡C¬°¤F½T«O¦øªA¾¹¤£¦ý§¹¦¨¤F¤@­Ó½Ð¨D¡A¦Ó¥BÁÙ³ø§i¤F¤@­Ó OK ª¬ºA¡A½Ð¦b±zªº¦^¶Ç¨ç¼Æ¤¤¼W¥[¥t¥~¤@­ÓÀˬd¥\¯à¡A¦p ²M³æ 7 ©Ò¥Ü¡C

Top

¡@


²M³æ 7. Àˬd¦³®Äª¬ºA¥N½X

    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, "<br />");

       } else

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

     }

   }

³z¹L¼W¥[³o´X¦æµ{¦¡½X¡A±z´N¥i¥H½T»{¬O§_¦s¦b°ÝÃD¡A¨Ï¥ÎªÌ·|¬Ý¨ì¤@­Ó¦³¥Îªº¿ù»~°T®§¡A¦Ó¤£¶È¶È¬O¬Ý¨ì¤@­Ó¥ÑÂ_³¹¨ú¸qªº¸ê®Æ©Òºc¦¨ªº­¶­±¡A¦Ó¨S¦³¥ô¦ó¸ÑÄÀ¡C

­«©w¦V©M­«·s¸ô¥Ñ

¦b²`¤J¤¶²Ð¦³Ãö¿ù»~ªº¤º®e¤§«e¡A§Ú­Ì¦³¥²­n¨Ó°Q½×¤@¤U¦³Ãö¤@­Ó¦b¨Ï¥Î Ajax ®É ¨Ã¤£»Ý­n Ãö¤ßªº°ÝÃD ¡X¡X ­«©w¦V¡C¦b HTTP ª¬ºA¥N½X¤¤¡A³o¬O 300 ¨t¦Cªºª¬ºA¥N½X¡A¥]¬A¡G

  • 301¡G¥Ã¤[²¾°Ê
  • 302¡G§ä¨ì¡]½Ð¨D³Q­«·s©w¦V¨ì¥t¥~¤@­Ó URL/URI ¤W¡^
  • 305¡G¨Ï¥Î¥N²z¡]½Ð¨D¥²¶·¨Ï¥Î¤@­Ó¥N²z¨Ó³s½u©Ò½Ð¨Dªº¸ê·½¡^

Ajax µ{¦¡³]­p®v¥i¯à¨Ã¤£¤ÓÃö¤ß¦³Ãö­«©w¦Vªº°ÝÃD¡A³o¬O¥Ñ©ó¨â¤è­±ªº­ì¦]¡G

  • ­º¥ý¡AAjax À³¥Îµ{¦¡³q±`³£¬O¬°¤@­Ó¯S©wªº¦øªA¾¹ºÝScript¡Bservlet ©ÎÀ³¥Îµ{¦¡¦Ó½s¼gªº¡C¹ï©ó¨º¨Ç±z¬Ý¤£¨ì´N®ø¥¢¤Fªº²Õ¥ó¨Ó»¡¡AAjax µ{¦¡³]­p®v´N¤£¤Ó²M·¡¤F¡C¦]¦¹¦³®É±z·|ª¾¹D¸ê·½¤w¸g²¾°Ê¤F¡]¦]¬°±z²¾°Ê¤F¥¦¡A©ÎªÌ³z¹L¬YºØ¤â¬q²¾°Ê¤F¥¦¡^¡A±µ¤U¨Ó­n­×§ï½Ð¨D¤¤ªº URL¡A¨Ã¥B¤£·|¦A¸I¨ì³oºØµ²ªG¤F¡C
  • §ó¬°­«­nªº¤@­Ó­ì¦]¬O¡GAjax À³¥Îµ{¦¡©M½Ð¨D³£¬O«Ê¸Ë¦b¨F²°¤¤ªº¡C³o´N·N¨ýµÛ´£¨Ñ«Ø¥ß Ajax ½Ð¨Dªº Web ­¶­±ªºÄæ¦ì¥²¶·¬O¹ï³o¨Ç½Ð¨D¶i¦æ¦^À³ªºÄæ¦ì¡C¦]¦¹ ebay.com ©Ò´£¨Ñªº Web ­¶­±´N¤£¯à¹ï¤@­Ó¦b amazon.com ¤W°õ¦æªºScript«Ø¥ß¤@­Ó Ajax ­·®æªº½Ð¨D¡F¦b ibm.com ¤Wªº Ajax À³¥Îµ{¦¡¤]µLªk¹ï¦b netbeans.org ¤W°õ¦æªº servlets µo¥X½Ð¨D¡C

µ²ªG¬O±zªº½Ð¨DµLªk­«©w¦V¨ì¨ä¥L¦øªA¾¹¤W¡A¦Ó¤£·|²£¥Í¦w¥þ©Ê¿ù»~¡C¦b³o¨Ç±¡ªp¤¤¡A±z®Ú¥»´N¤£·|±o¨ìª¬ºA¥N½X¡C³q±`¦b´ú¸Õ±±¨î»O¤¤³£·|²£¥Í¤@­Ó JavaScript ¿ù»~¡C¦]¦¹¡A¦b¹ïª¬ºA¥N½X¶i¦æ¥R¤Àªº¦Ò¼{¤§«á¡A±z´N¥i¥H§¹¥þ©¿²¤­«©w¦V¥N½Xªº°ÝÃD¤F¡C 

Ãä¬É±¡ªp©M§xÃø±¡ªp

¬Ý¨ì²{¦b¡A¤@¨Ç·s¤âµ{¦¡³]­p®v´N¥i¯à·|³o¨s³º¬O­n°Q½×¤°»ò¤º®e¡C¦³¤@ÂI¨Æ¹ê¤j®a»Ý­nª¾¹D¡G¥u¦³¤£¨ì 5% ªº Ajax ½Ð¨D»Ý­n¨Ï¥Î½Ñ¦p 2¡B3 ¤§Ãþªº´Nºüª¬ºA©M½Ñ¦p 403 ¤§Ãþªºª¬ºA¥N½X¡]¹ê»Ú¤W¡A³o­Ó¤ñ²v¥i¯à§ó±µªñ©ó 1% ¬Æ¦Ü§ó¤Ö¡^¡C³o¨Ç±¡ªp«D±`­«­n¡AºÙ¬° Ãä¬É±¡ªp¡]edge case¡^ ¡X¡X ¥¦­Ì¥u·|¦b¤@¨Ç«D±`¯S®íªº±¡ªp¤Uµo¥Í¡A¨ä¤¤¹J¨ìªº³£¬O³Ì©_¯Sªº°ÝÃD¡CÁöµM³o¨Ç±¡ªp¨Ã¤£´¶¹M¡A¦ý¬O³o¨ÇÃä¬É±¡ªp«o¦û¾Ú¤F¤j³¡¤À¨Ï¥ÎªÌ©Ò¸I¨ìªº°ÝÃDªº 80%!

¹ï©ó¨å«¬ªº¨Ï¥ÎªÌ¨Ó»¡¡AÀ³¥Îµ{¦¡ 100 ¦¸³£¬O¥¿±`¤u§@ªº³o­Ó¨Æ¹ê³q±`³£·|³Q§Ñ°O¡AµM¦ÓÀ³¥Îµ{¦¡¥u­n¤@¦¸¥X¿ù´N·|³Q¥L­Ì²M·¡¦a°O¦í¡C¦pªG±z¥i¥H«Ü¦n¦a³B²zÃä¬É±¡ªp¡]©Î§xÃø±¡ªp¡^¡A´N¥i¥H¬°¦A¦¸³s½u¯¸ÂIªº¨Ï¥ÎªÌ´£¨Ñº¡·Nªº¦^³ø¡C

 ¿ù»~

¤@¥¹±µ¦¬¨ìª¬ºA¥N½X 200 ¨Ã¥B·NÃѨì¥i¥H«Ü¤jµ{«×¤W©¿²¤ 300 ¨t¦Cªºª¬ºA¥N½X¤§«á¡A©Ò»Ý­n¾á¤ßªº°ß¤@¤@²Õ¥N½X´N¬O 400 ¨t¦Cªº¥N½X¤F¡A³o»¡©ú¤F¤£¦PÃþ«¬ªº¿ù»~¡C¦^ÀY¦A¨Ó¬Ý¤@¤U ²M³æ 7¡A¨Ãª`·N¦b¹ï¿ù»~¶i¦æ³B²z®É¡A¥u±N¤Ö¼Æ±`¨£ªº¿ù»~°T®§¿é¥Xµ¹¨Ï¥ÎªÌ¤F¡C¾¨ºÞ³o¬O´Â¥¿½T¤è¦V«e¶iªº¤@¨B¡A¦ý¬O­n§i¶D±q¨ÆÀ³¥Îµ{¦¡¶}µoªº¨Ï¥ÎªÌ©Mµ{¦¡³]­p®v¨s³ºµo¥Í¤F¤°»ò°ÝÃD¡A³o¨Ç°T®§¤´µM¬O¨S¦³¤Ó¤j¥Î³Bªº¡C

Top

¡@

­º¥ý¡A§Ú­Ì­n¼W¥[¹ï§ä¤£¨ìªººô­¶ªº¤ä´©¡C¹ê»Ú¤W³o¦b¤j³¡¤À²£«~¨t²Î¤¤³£¤£À³¸Ó¥X²{¡A¦ý¬O¦b´ú¸ÕScript¦ì¸mµo¥ÍÅܤƩε{¦¡³]­p®v¿é¤J¤F¿ù»~ªº URL ®É¡A³oºØ±¡ªp¨Ã¤£¨u¨£¡C¦pªG±z¥i¥H¦ÛµM¦a³ø§i 404 ¿ù»~¡A´N¥i¥H¬°¨º¨Ç§xÂZ¤£³ôªº¨Ï¥ÎªÌ©Mµ{¦¡³]­p®v´£¨Ñ§ó¦hÀ°§U¡C¨Ò¦p¡A¦pªG¦øªA¾¹¤Wªº¤@­ÓScript³Q§R°£¤F¡A§Ú­Ì´N¥i¥H¨Ï¥Î ²M³æ 7 ¤¤ªº¥N½X¡A³o¼Ë¨Ï¥ÎªÌ´N·|¬Ý¨ì¤@­Ó¦p ¹Ï 5 ©Ò¥Üªº«D´y­z©Ê¿ù»~¡C


¹Ï 5. ±`¨£¿ù»~³B²z

¨Ï¥ÎªÌµLªk§PÂ_°ÝÃD¨s³º¬O»{ÃÒ°ÝÃD¡B¨S§ä¨ìScript¡]¦¹³B´N¬O³oºØ±¡ªp¡^¡B¨Ï¥ÎªÌ¿ù»~ÁÙ¬Oµ{¦¡½X¤¤¦³¨Ç¦a¤è²£¥Í¤F°ÝÃD¡C¼W¥[¤@¨Ç²³æªºµ{¦¡½X¥i¥HÅý³o­Ó¿ù»~§ó¥[¨ãÅé¡C½Ð°Ñ·Ó ²M³æ 8¡A¥¦­t³d³B²z¨S§ä¨ìªºScript©Î»{ÃÒµo¥Í¿ù»~ªº±¡ªp¡A¦b¥X²{³o¨Ç¿ù»~®É³£·|µ¹¥X¨ãÅ骺°T®§¡C


²M³æ 8. Àˬd¦³®Äª¬ºAµ{¦¡½X

    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, "<br />");

       } else if (request.status == 404) {

         alert ("Requested URL is not found.");

       } else if (request.status == 403) {

         alert("Access denied.");

       } else

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

     }

   }

 ÁöµM³o¨ÌµM¬Û·í²³æ¡A¦ý¬O¥¦ªº½T¦h´£¨Ñ¤F¤@¨Ç¦³¥Îªº¸ê°T¡C¹Ï 6 µ¹¥X¤F»P ¹Ï 5 ¬Û¦Pªº¿ù»~¡A¦ý¬O³o¤@¦¸¿ù»~³B²zµ{¦¡½X¦V¨Ï¥ÎªÌ©Îµ{¦¡³]­p®v§ó¦n¦a»¡©ú¤F¨s³ºµo¥Í¤F¤°»ò¡C


¹Ï 6. ¯S®í¿ù»~³B²z

Top

¡@

¦b§Ú­Ì¦Û¤vªºÀ³¥Îµ{¦¡¤¤¡A¥i¥H¦Ò¼{¦bµo¥Í»{ÃÒ¥¢±Ñªº±¡ªp®É²M°£¨Ï¥ÎªÌ¦W©M±K½X¡A¨Ã¦V¿Ã¹õ¤W¼W¥[¤@±ø¿ù»~°T®§¡C§Ú­Ì¥i¥H¨Ï¥ÎÃþ¦üªº¤èªk¨Ó§ó¦n¦a³B²z§ä¤£¨ìScript©Î¨ä¥L 400 Ãþ«¬ªº¿ù»~¡]¨Ò¦p 405 ªí¥Ü¤£¤¹³\¨Ï¥Î½Ñ¦pµo°e HEAD ½Ð¨D¤§Ãþ¤£¥i±µ¨üªº½Ð¨D¤èªk¡A¦Ó 407 «hªí¥Ü»Ý­n¶i¦æ¥N²z»{ÃÒ¡^¡CµM¦Ó¤£ºÞ±Ä¥Î­þºØ¿ï¾Ü¡A³£»Ý­n±q¹ï¦øªA¾¹¤Wªð¦^ªºª¬ºA¥N½X¶}©l¤J¤â¶i¦æ³B²z¡C

¨ä¥L½Ð¨DÃþ«¬

¦pªG±z¯u§Æ±æ±±¨î XMLHttpRequest ª«¥ó¡A¥i¥H¦Ò¼{³Ì«á¹ê²{³oºØ¥\¯à ¡X¡X ±N HEAD ½Ð¨D¼W¥[¨ì«ü¥O¤¤¡C¦b«e¨â½g¤å³¹¤¤¡A§Ú­Ì¤w¸g¤¶²Ð¤F¦p¦ó«Ø¥ß GET ½Ð¨D¡F¦b°¨¤W´N­nµoªíªº¤@½g¤å³¹¤¤¡A±z·|¾Ç²ß¦³Ãö¨Ï¥Î POST ½Ð¨D±N¸ê®Æµo°e¨ì¦øªA¾¹¤Wªºª¾ÃÑ¡C¤£¹L¥»µÛ¼W±j¿ù»~³B²z©M¸ê°T·j¶°ªººë¯«¡A±zÀ³¸Ó¾Ç²ß¦p¦ó«Ø¥ß HEAD ½Ð¨D¡C

«Ø¥ß½Ð¨D

¹ê»Ú¤W«Ø¥ß HEAD ½Ð¨D«D±`²³æ¡F±z¥i¥H¨Ï¥Î "HEAD"¡]¦Ó¤£¬O "GET" ©Î "POST"¡^§@¬°²Ä¤@­Ó°Ñ¼Æ¨Ó¨Ï¥Î open() ¤èªk¡A¦p ²M³æ 9 ©Ò¥Ü¡C


²M³æ 9. ¨Ï¥Î Ajax «Ø¥ß¤@­Ó HEAD ½Ð¨D

    function getSalesData() {

     createRequest();

     var url = "/boards/servlet/UpdateBoardSales";

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

     request.onreadystatechange = updatePage;

     request.send(null);

   }

 ·í±z³o¼Ë«Ø¥ß¤@­Ó HEAD ½Ð¨D®É¡A¦øªA¾¹¨Ã¤£·|¹³¹ï GET ©Î POST ½Ð¨D¤@¼Ëªð¦^¤@­Ó¯u¥¿ªº¦^À³¡C¬Û¤Ï¡A¦øªA¾¹¥u·|ªð¦^¸ê·½ªº ÀY¡]header¡^¡A³o¥]¬A¦^À³¤¤¤º®e³Ì«á­×§ïªº®É¶¡¡B½Ð¨D¸ê·½¬O§_¦s¦b©M«Ü¦h¨ä¥L¦³¥Î¸ê°T¡C±z¥i¥H¦b¦øªA¾¹³B²z¨Ãªð¦^¸ê·½¤§«e¨Ï¥Î³o¨Ç¸ê°T¨ÓÁA¸Ñ¦³Ãö¸ê·½ªº¸ê°T¡C

¹ï©ó³oºØ½Ð¨D±z¥i¥H°µªº³Ì²³æªº¨Æ±¡´N¬O²³æ¦a¿é¥X©Ò¦³ªº¦^À³ªíÀYªº¤º®e¡C³o¥i¥HÅý±zÁA¸Ñ³z¹L HEAD ½Ð¨D¥i¥H¨Ï¥Î¤°»ò¡C²M³æ 10 ´£¨Ñ¤F¤@­Ó²³æªº¦^¶Ç¨ç¼Æ¡A¥Î¨Ó¿é¥X±q HEAD ½Ð¨D¤¤Àò±oªº¦^À³ªíÀYªº¤º®e¡C


²M³æ 10. ¿é¥X±q HEAD ½Ð¨D¤¤Àò±oªº¦^À³ªíÀYªº¤º®e

    function updatePage() {

     if (request.readyState == 4) {

       alert(request.getAllResponseHeaders());

     }

   }

 ½Ð°Ñ¨£ ¹Ï 7¡A¨ä¤¤Åã¥Ü¤F±q¤@­Ó¦V¦øªA¾¹µo¥Xªº HEAD ½Ð¨DªºÂ²³æ Ajax À³¥Îµ{¦¡ªð¦^ªº¦^À³ªíÀY¡C


¹Ï 7. HEAD ½Ð¨Dªº¦^À³ªíÀY

Top

¡@

±z¥i¥H³æ¿W¨Ï¥Î³o¨ÇªíÀY¡]±q¦øªA¾¹Ãþ«¬¨ì¤º®eÃþ«¬¡^¦b Ajax À³¥Îµ{¦¡¤¤´£¨Ñ¨ä¥L¸ê°T©Î¥\¯à¡C

Àˬd URL

±z¤w¸g¬Ý¨ì¤F·í URL ¤£¦s¦b®ÉÀ³¸Ó¦p¦óÀˬd 404 ¿ù»~¡C¦pªG³oÅܦ¨¤@­Ó±`¨£ªº°ÝÃD ¡X¡X ¥i¯à¬O¯Ê¤Ö¤F¤@­Ó¯S©wªºScript©Î servlet ¡X¡X ¨º»ò±z´N¥i¯à·|§Æ±æ¦b«Ø¥ß§¹¾ãªº GET ©Î POST ½Ð¨D¤§«e¨ÓÀˬd³o­Ó URL¡C­n¹ê²{³oºØ¥\¯à¡A«Ø¥ß¤@­Ó HEAD ½Ð¨D¡AµM«á¦b¦^¶Ç¨ç¼Æ¤¤Àˬd 404 ¿ù»~¡F²M³æ 11 µ¹¥X¤F¤@­Ó²³æªº¦^¶Ç¨ç¼Æ¡C


²M³æ 11. Àˬd¬Y­Ó URL ¬O§_¦s¦b

   function updatePage() {

     if (request.readyState == 4) {

       if (request.status == 200) {

         alert("URL exists");

       } else if (request.status == 404) {

         alert("URL does not exist.");

       } else {

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

       }

     }

   }

¡@

¸Û¹ê¦a»¡¡A³o¬qµ{¦¡½Xªº»ù­È¨Ã¤£¤Ó¤j¡C¦øªA¾¹¥²¶·¹ï½Ð¨D¶i¦æ¦^À³¡A¨Ãºc³y¤@­Ó¦^À³¨Ó¶ñ¥R¤º®eªø«×ªº¦^À³ªíÀY¡A¦]¦¹¨Ã¤£¯à¸`¬Ù¥ô¦ó³B²z®É¶¡¡C¥t¥~¡A³oªá¶Oªº®É¶¡»P«Ø¥ß½Ð¨D¨Ã¨Ï¥Î HEAD ½Ð¨D¨Ó¬d¬Ý URL ¬O§_¦s¦b©Ò»Ý­nªº®É¶¡¤@¼Ë¦h¡A¦]¬°¥¦­n«Ø¥ß¨Ï¥Î GET ©Î POST ªº½Ð¨D¡A¦Ó¤£¶È¶È¬O¦p ²M³æ 7 ©Ò¥Ü¤@¼Ë¨Ó³B²z¿ù»~¥N½X¡C¤£¹L¡A¦³®É½T¤Á¦aÁA¸Ñ¥Ø«e¤°»ò¥i¥Î¤]¬O«D±`¦³¥Îªº¡F±z¥Ã»·¤£·|ª¾¹D¦ó®É³Ð³y¤O´N·|°nµo©ÎªÌ¦ó®É»Ý­n HEAD ½Ð¨D¡I

¦³¥Îªº HEAD ½Ð¨D

±z·|µo²{ HEAD ½Ð¨D«D±`¦³¥Îªº¤@­Ó»â°ì¬O¥Î¨Ó¬d¬Ý¤º®eªºªø«×©Î¤º®eªºÃþ«¬¡C³o¼Ë¥i¥H½T©w¬O§_»Ý­nµo¦^¤j¶q¸ê®Æ¨Ó³B²z½Ð¨D¡A©M¦øªA¾¹¬O§_¸Õ¹Ïªð¦^¤G¶i¦ì¸ê®Æ¡A¦Ó¤£¬O HTML¡B¤å¦r©Î XML¡]¦b JavaScript ¤¤¡A³o 3 ºØÃþ«¬ªº¸ê®Æ³£¤ñ¤G¶i¦ì¸ê®Æ§ó®e©ö³B²z¡^¡C

¦b³o¨Ç±¡ªp¤¤¡A±z¥u¨Ï¥Î¤F¾A·íªºªíÀY¦WºÙ¡A¨Ã±N¨ä¶Ç»¼µ¹ XMLHttpRequest ª«¥óªº getResponseHeader() ¤èªk¡C¦]¦¹­nÀò¨ú¦^À³ªºªø«×¡A¥u»Ý­n¨Ï¥Î request.getResponseHeader("Content-Length");¡C­nÀò¨ú¤º®eÃþ«¬¡A½Ð¨Ï¥Î request.getResponseHeader("Content-Type");¡C

¦b«Ü¦hÀ³¥Îµ{¦¡¤¤¡A«Ø¥ß HEAD ½Ð¨D¨Ã¨S¦³¼W¥[¥ô¦ó¥\¯à¡A¬Æ¦Ü¥i¯à·|¾É­P½Ð¨D³t«×ÅܺC¡]³z¹L±j¨î«Ø¥ß¤@­Ó HEAD ½Ð¨D¨ÓÀò¨ú¦³Ãö¦^À³ªº¸ê®Æ¡AµM«á¦b¨Ï¥Î¤@­Ó GET ©Î POST ½Ð¨D¨Ó¯u¥¿Àò¨ú¦^À³¡^¡CµM¦Ó¡A¦b¥X²{±z¤£½T©w¦³ÃöScript©Î¦øªA¾¹ºÝ¤¸¥óªº±¡ªp®É¡A¨Ï¥Î HEAD ½Ð¨D¥i¥HÀò¨ú¤@¨Ç°ò¥»ªº¸ê®Æ¡A¦Ó¤£»Ý­n¹ï¦^À³¸ê®Æ¯u¥¿¶i¦æ³B²z¡A¤]¤£»Ý­n¤j¶qªºÀW¼e¨Óµo°e¦^À³¡C

µ²§ô»y

¹ï©ó«Ü¦h Ajax ©M Web µ{¦¡³]­p®v¨Ó»¡¡A¥»¤å¤¤¤¶²Ðªº¤º®e¦ü¥G¬O¤Ó¶i¶¥¤F¡C«Ø¥ß HEAD ½Ð¨Dªº»ù­È¬O¤°»ò©O¡H¨ì©³¦b¤°»ò±¡ªp¤U»Ý­n¦b JavaScript ¤¤©úÅã¦a³B²z­«©w¦Vª¬ºA¥N½X©O¡H³o¨Ç³£¬O«Ü¦nªº°ÝÃD¡F¹ï©ó²³æªºÀ³¥Îµ{¦¡¨Ó»¡¡Aµª®×¬O³o¨Ç¶i¶¥§Þ³Nªº»ù­È¨Ã¤£¬O«D±`¤j¡C

µM¦Ó¡AWeb ¤w¸g¤£¦A¬O¥u»Ý¹ê²{²³æÀ³¥Îµ{¦¡ªº¦a¤è¤F¡F¨Ï¥ÎªÌ¤w¸gÅܱo§ó¥[¶i¶¥¡A«È¤á´Á±æ¯à°÷Àò±o§ó¦nªºÃ­©w©Ê¡B§ó¶i¶¥ªº¿ù»~³ø§i¡A¦pªGÀ³¥Îµ{¦¡¦³ 1% ªº®É¶¡°±¾÷¡A¨º»ò¸g²z´N¥i¯à·|¦]¦¹¦Ó³Q¸Ñ¶±¡C

¦]¦¹±zªº¤u§@´N¤£¯à¶È¶È§½­­©ó²³æªºÀ³¥Îµ{¦¡¤F¡A¦Ó¬O»Ý­n§ó²`¤J²z¸Ñ XMLHttpRequest¡C

  • ¦pªG±z¥i¥H¦Ò¼{¦UºØ´Nºüª¬ºA ¡X¡X ¨Ã¥B²z¸Ñ¤F³o¨Ç´Nºüª¬ºA¦b¤£¦PÂsÄý¾¹¤§¶¡ªº°Ï§O ¡X¡X ´N¥i¥H§Ö³t´ú¸ÕÀ³¥Îµ{¦¡¤F¡C±z¬Æ¦Ü¥i¥H°ò©ó´Nºüª¬ºA¦Ó¶}µo¤@¨Ç³Ð³y©Êªº¥\¯à¡A¨Ã¦V¨Ï¥ÎªÌ©M«È¤á¦^³ø½Ð¨Dªºª¬ºA¡C
  • ¦pªG±z­n¹ïª¬ºA¥N½X¶i¦æ±±¨î¡A´N¥i¥H³]©wÀ³¥Îµ{¦¡¨Ó³B²zScript¿ù»~¡B«D¹w´Áªº¦^À³¥H¤ÎÃä½t±¡ªp¡Cµ²ªG¬OÀ³¥Îµ{¦¡¦b©Ò¦³ªº®É¶¡³£¥i¥H¥¿±`¤u§@¡A¦Ó¤£¶È¶È¬O¥u¯à¤@¤Á³£¥¿±`ªº±¡ªp¤U¤~¯à°õ¦æ¡C
  • ¼W¥[³oºØ«Ø¥ß HEAD ½Ð¨Dªº¯à¤O¡AÀˬd¬Y­Ó URL ¬O§_¦s¦b¡A¥H¤Î½T»{¬Y­ÓÀɬO§_³Q­×§ï¹L¡A³o¼Ë´N¥i¥H½T«O¨Ï¥ÎªÌ¥i¥HÀò±o¦³®Äªº­¶­±¡A¨Ï¥ÎªÌ©Ò¬Ý¨ìªº¸ê°T³£¬O³Ì·sªº¡A¡]³Ì­«­nªº¬O¡^Åý¥L­ÌÅå³Y³o­ÓÀ³¥Îµ{¦¡¬O¦p¦ó°·§§©M³q¥Î¡C

Top

¡@

¥»¤åªº¥Øªº¨Ã«D¬O­nÅý±zªºÀ³¥Îµ{¦¡Åã±o¤Q¤ÀµØÄR¡A¦Ó¬OÀ°§U±z¥h±¼¶À¦â»E¥ú¿O«á­«ÂI¬LÅã¤å¦rªº¬üÄR¡A©ÎªÌ¥~Æ[§ó¹³®à­±¤@¼Ë¡C¾¨ºÞ³o¨Ç³£¬O Ajax ªº¥\¯à¡]¦b«áÄò´X½g¤å³¹¤¤´N·|¤¶²Ð¡^¡A¤£¹L¥¦­Ì«o¹³¬O³J¿|ªí­±ªº¤@¼h¥¤ªo¡C¦pªG±z¥i¥H¨Ï¥Î Ajax ¨Óºc«Ø¤@­Ó°í¹êªº°ò¦¡AÅýÀ³¥Îµ{¦¡¥i¥H«Ü¦n¦a³B²z¿ù»~©M°ÝÃD¡A¨Ï¥ÎªÌ´N·|ªð¦^±zªº¯¸ÂI©MÀ³¥Îµ{¦¡¡C¦b±µ¤U¨Óªº¤å³¹¤¤¡A§Ú­Ì±N¼W¥[³oºØª½Æ[ªº§Þ¥©¡A³o·|Åý«È¤á¿³¾Ä±oµo§Ý¡C¡]»{¯u¦a»¡¡A±z¤@©w¤£§Æ±æ¿ù¹L¤U¤@½g¤å³¹¡I¡^

¤U¸ü

´y­z

¦W¦r

¤j¤p

¤U¸ü¤èªk

Example code for this article

wa-ajaxintro3_ajax-xhr_adv.zip

183KB

HTTP

¡@

°Ñ¦Ò¸ê®Æ

¾Ç²ß


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


°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§Q¥ÎVMLµe¥X¶ê»æ²Î­p¹Ï?

¥»¦¸´¼¾e¤À¨É³ø±N§i¶D±z¦p¦ó§Q¥ÎVML§Þ³N¥hø»s¶ê»æ²Î­p¹Ï,¦¹µ{¦¡½d¨Ò¶È­­¨Ï¥Î©óIE5.5ª©¥H¤W¤§ª©¥»,¥B¤£¤ä´©«DIE¤§ÂsÄý¾¹,©Ò¥H½Ð¯S§Oª`·N.

¹ê§@¨BÆJ¦p¤U:

1.      ½Ð¥ý¦b¸ê®Æ®w¤¤«Ø¥ß¤@ºô­¶,ºô­¶¦WºÙ¬°¡¨DrawPie.js¡¨,¨Ã¦bºô­¶Äݩʤ¤¤Ä¿ï¡¨±Nºô­¶¤º®eµø¬°HTML¡¨,ºô­¶¤¤¨Ã¶K¤W¦p¤Uµ{¦¡:

function NumberRound(s,lno){

                var index=s.indexOf(".")

                var index1=-1;

                var tno=1;

                var s1="";

                var s2="";

                var s3="";

                for (var k=0;k<=lno;k++){

                                tno=tno*10;

                }                             

                if (index==-1){

                                return s

                }else {

                                s1=parseFloat(s.substring(0,index-1)+"0")+(((parseFloat(s.substring(index-1,index+lno+2))*tno)+5)/tno)+"";

                                index1=s1.indexOf(".")

                                return parseFloat(s1.substring(0,index+lno+1))+"";

                }

}

function Add(){

    var shape=document.createElement("v:shape");

    shape.type="#tooltipshape";

    shape.style.width="150px";

    shape.style.height="150px";

    shape.coordsize="21600,21600";

    shape.fillcolor="infobackground";  

    var textbox=document.createElement("v:textbox");

    textbox.style.border="1px solid red";

    textbox.style.innerHTML="??";

    shape.appendChild(textbox);    

    document.body.appendChild(shape);

function VMLPie(pContainer,pWidth,pHeight,pCaption){

    this.Container=pContainer;

    this.Width= pWidth || "400px";

    this.Height=pHeight || "250px";

    this.Caption = pCaption || "VML Chart";

    this.backgroundColor="";

    this.Shadow=false;

    this.BorderWidth=0;

    this.BorderColor=null;

    this.all=new Array();

    this.RandColor=function(){       

        return "rgb("+ parseInt( Math.random() * 255) +"," +parseInt( Math.random() * 255) +"," +parseInt( Math.random() * 255)+")";

    }

    this.VMLObject=null;

VMLPie.prototype.Draw=function(){

    //µe¥~®Ø

        var o=document.createElement("v:group");

        o.style.width=this.Width;

        o.style.height=this.Height;

        o.coordsize="21600,21600";

    //¼W¥[¤@­Ó­I´º¼h

        var vRect=document.createElement("v:rect");

        vRect.style.width="23600px"

        vRect.style.height="21600px"

        o.appendChild(vRect);       

        var vCaption=document.createElement("v:textbox");

        vCaption.style.fontSize="24px";       

        vCaption.style.height="24px"

        vCaption.style.fontWeight="bold";

        vCaption.innerHTML=this.Caption;

        vCaption.style.textAlign="center";       

        vRect.appendChild(vCaption);

    //³]©wÃ䮨¤j¤p   

        if(this.BorderWidth){

            vRect.strokeweight=this.BorderWidth;

        }

    //³]©wÃ䮨ÃC¦â

        if(this.BorderColor){

            vRect.strokecolor=this.BorderColor;

        }

    //³]©w­I´ºÃC¦â

        if(this.backgroundColor){       

            vRect.fillcolor=this.backgroundColor;

        }

    //³]©w¬O§_¥X²{³±¼v

        if(this.Shadow){

            var vShadow=document.createElement("v:shadow");

            vShadow.on="t";

            vShadow.type="single";

            vShadow.color="graytext";

            vShadow.offset="4px,4px";

            vRect.appendChild(vShadow);

        }

        this.Container.appendChild(o);       

    //¶}©lµe¤º³¡¶ê

        var oOval=document.createElement("v:oval");

        oOval.style.width="15000px";

        oOval.style.height="14000px";

        oOval.style.top="4000px";

        oOval.style.left="1000px";

        oOval.fillcolor="#d5dbfb";       

        //¥»¨Ó­pµe¥[¤J3Dªº®ÄªG¡A«á¨Ó·Pı½T¹ê¤£¦n±±¨î¡A´NÃi±o°Ê¤â¤F

        //var o3D=document.createElement("o:extrusion");

        var formatStyle=' <v:fill  rotate="t" angle="-135" focus="100%" type="gradient"/>';

        //formatStyle+='<o:extrusion v:ext="view" color="#9cf" on="t" rotationangle="-15"';

        //formatStyle+=' viewpoint="0,34.72222mm" viewpointorigin="0,.5" skewangle="105"';

        //formatStyle+=' lightposition="0,50000" lightposition2="0,-50000"/>';

        formatStyle+='<o:extrusion v:ext="view" backdepth="1in" on="t" viewpoint="0,34.72222mm"   viewpointorigin="0,.5" skewangle="90" lightposition="-50000"   lightposition2="50000" type="perspective"/>';

        oOval.innerHTML=formatStyle;        

        o.appendChild(oOval);

        this.CreatePie(o);         

}

VMLPie.prototype.CreatePie=function(vGroup){

        var mX=Math.pow(2,16) * 360;

        //³o­Ó°Ñ¼Æ¬Oµe¹Ï§ÎªºÃöÁä

        //AE x y width height startangle endangle

        //x yªí¥Ü¶ê¤ß¦ì¸m

        //width height§Îª¬ªº¤j¤p

        //startangle endangleªº­pºâ¤èªk¦p¤U

        // 2^16 * «×¼Æ        

        var vTotal=0;

        var startAngle=0;

        var endAngle=0;

        var pieAngle=0;

        var prePieAngle=0;       

        var objRow=null;

        var objCell=null;       

        for(i=0;i<this.all.length;i++){

            vTotal+=this.all[i].Value;

        }       

        var objLegendRect=document.createElement("v:rect");       

        var objLegendTable=document.createElement("table");

        objLegendTable.cellPadding=0;

        objLegendTable.cellSpacing=5;

        objLegendTable.width="100%";

        with(objLegendRect){

         //½Õ¾ãÅã¥Ü¹Ï¨Òªº¦ì¸m»P®Øªº¤j¤p

            style.left="17000px";

            style.top="2000px";

            style.width="5000px";

            style.height="18000px";

            fillcolor="#e6e6e6";

            strokeweight="1px";           

        }

        objRow=objLegendTable.insertRow();

        objCell=objRow.insertCell();

        objCell.colSpan="2";

        //objCell.style.border="1px outset";

        objCell.style.backgroundColor="black";

        objCell.style.padding="5px";

        objCell.style.color="window";

        objCell.style.font="caption";

        objCell.innerText="Á`¼Æ:"+vTotal;        

        var vTextbox=document.createElement("v:textbox");       

        vTextbox.appendChild(objLegendTable);

        objLegendRect.appendChild(vTextbox);       

        var vShadow=document.createElement("v:shadow");

        vShadow.on="t";

        vShadow.type="single";

        vShadow.color="graytext";

        vShadow.offset="2px,2px";

        objLegendRect.appendChild(vShadow);        

        vGroup.appendChild(objLegendRect);        

        var strAngle="";

        for(i=0;i<this.all.length;i++){ //¨Ì§Çµe¥X¦U­Ó»æ¹Ï

            var vPieEl=document.createElement("v:shape");

            var vPieId=document.uniqueID;

            vPieEl.style.width="15000px";

            vPieEl.style.height="14000px";

            vPieEl.style.top="4000px";

            vPieEl.style.left="1000px";

            vPieEl.coordsize="1500,1400";

            vPieEl.strokecolor="white";           

            vPieEl.id=vPieId;

            pieAngle= this.all[i].Value / vTotal;

            //pieAngle= NumberRound((this.all[i].Value / vTotal)+"",4);

//alert(pieAngle);

            startAngle+=prePieAngle;

            prePieAngle=pieAngle;

            endAngle=pieAngle;            

            //strAngle+=this.all[i].Name +":" +this.all[i].Value+ " Start:"+startAngle +"  End:"+ endAngle +"\n";           

            vPieEl.path="M 750 700 AE 750 700 750 700 " + parseInt(mX * startAngle) +" " + parseInt(mX * endAngle) +" xe";

            vPieEl.title=this.all[i].Name +"\n©Ò¥e¤ñ¨Ò:"+ NumberRound((endAngle * 100)+"",2)+"%\n¸Ô²Ó´y­z:" +this.all[i].TooltipText;           

            //vPieEl.innerHTML='<v:fill  rotate="t" angle="-135" focus="100%" type="gradient"/>';

            var objFill=document.createElement("v:fill");

            objFill.rotate="t";

            objFill.focus="100%";

            objFill.type="gradient";

            objFill.angle=parseInt( 360 * (startAngle + endAngle /2));

            vPieEl.appendChild(objFill);           

            var objTextbox=document.createElement("v:textbox");

            objTextbox.border="1px solid black";

            objTextbox.innerHTML=this.all[i].Name +":" + this.all[i].Value;

            //vPieEl.appendChild(objTextbox);           

            var vColor=this.RandColor();

            vPieEl.fillcolor=vColor; //³]©wÃC¦â

            //¶}©lµe¹Ï¨Ò

            objRow=objLegendTable.insertRow();           

            objCell=objRow.insertCell();//ÃC¦â¼Ð°O

            objCell.style.backgroundColor=vColor;

            objCell.style.width="8px";           

            objCell=objRow.insertCell();

            objCell.style.font="icon";

            objCell.style.padding="3px";

            objCell.innerText=this.all[i].Name +":"+this.all[i].Value ;           

            vGroup.appendChild(vPieEl);

        }       

}

VMLPie.prototype.Refresh=function(){

}

VMLPie.prototype.AddData=function(sName,sValue,sTooltipText){ 

    var oData=new Object();

    oData.Name=sName;

    oData.Value=sValue;

    oData.TooltipText=sTooltipText;

    var iCount=this.all.length;

    this.all[iCount]=oData; 

}

VMLPie.prototype.Clear=function(){

    this.all.length=0;

}

2.     ¦b¸ê®Æ®w¤¤·s¼W¤@­Ó¥N²zµ{¦¡,¥N²zµ{¦¡¦WºÙ¬°¡¨DrawPie¡¨,¥N²zµ{¦¡Äݩʳ]©w¦p¤U¹Ï:

3.      ¦b¤W­z¥N²zµ{¦¡¤¤¶K¤W¦p¤UªºLotus Scriptµ{¦¡½X:

Sub Initialize

        Dim session As New NotesSession

        Dim db As NotesDatabase

        Dim view As NotesView

        Dim doc As NotesDocument

        Dim dbpath As Variant

        Set db=session.CurrentDatabase

        Set view=db.GetView("FeatList")

        dbpath=Evaluate({"/"+@ReplaceSubString(@SubSet(@DbName;-1);"\\";"/")+"/"})

        Print {Content-Type:text/html}

        Print {<HTML xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">}

        Print {<Title>2006¦~«×¾P°â·~ÁZ²Î­p¹Ï</Title>}

        Print {<HEAD>}    

        Print {<STYLE>}   

        Print "v\:*         {behavior:url(#default#VML);}"

        Print "o\:*         { behavior: url(#default#VML) }"

        Print ".shape       { behavior: url(#default#VML) }"

        Print {</STYLE>}

        Print {<script language="javascript" src="}+dbpath(0)+{DrawPie.js"></script>}

        Print {<script language="javascript">}

        Print {//¥H¤U¬O¨ç¼Æ¨Ï¥Î}

        Print "function DrawPie(){"

        Print {var objPie=new VMLPie(document.body,"600px","450px","2006¦~«×¾P°â·~ÁZ²Î­p¹Ï");}

        Print {//objPie.BorderWidth=3;}

        Print {//objPie.BorderColor="blue";}

        Print {//objPie.Width="800px";}

        Print {//objPie.Height="600px";}

        Print {objPie.backgroundColor="#ffffff";}

        Print {objPie.Shadow=true;}

        Print {//objPie.AddData(¼Æ¾Ú¦WºÙ,¼Æ­È¤j¤p,´y­z)}    

        Set doc = view.GetFirstDocument

        While Not ( doc Is Nothing )

                Print {objPie.AddData("} & doc.Location(0) & {",} & doc.feat(0) & {,"} & doc.Location(0) & "·~ÁZ" & {");}

                Set doc = view.GetNextDocument( doc )

        Wend      

        Print {objPie.Draw();}

        Print "}"   

        Print {</script>}

        Print {</head>}

        Print {<body onload="DrawPie()">}        

        Print {</body>}

        Print {</html>}

End Sub

4.     ´ú¸Õ¸ê®Æ½Ð¦Û¦æ¼ÒÀÀ´ú¸Õ,¦p¦³»Ý­n¥i¦Ü¥»¤½¥qºô¯¸ª½±µ¤U¸ü½d¨Ò¸ê®Æ®w§Y¥i.

5.     ½Ð§Q¥ÎIE¥h°õ¦æ¤W­z¥N²zµ{¦¡§Y¥i´ú¸Õ.URL½d¨Ò»Pµ²ªGµe­±¦p¤U:

URL:http://xxx.xx.xx/xxx/VMLPie.nsf/(DrawPie)?OpenAgent

µ²ªGµe­±:

                           

µù:¦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