Õ¾ÄÚËÑË÷: ÇëÊäÈëËÑË÷¹Ø¼ü´Ê

µ±Ç°Ò³Ãæ: ¿ª·¢×ÊÁÏÊ×Ò³ ¡ú Java רÌâ ¡ú AJAX£ºÈçºÎ´¦ÀíÊéÇ©ºÍºóÍË°´Å¥

AJAX£ºÈçºÎ´¦ÀíÊéÇ©ºÍºóÍË°´Å¥

ÕªÒª: ±¾ÎĽ«Õ¹Ê¾Ò»¸ö¿ªÔ´JavaScript¿â£¬¸Ã½Å±¾¿â¸øAJAXÓ¦ÓóÌÐò´øÀ´ÁËÊéÇ©ºÍºóÍË°´Å¥Ö§³Ö
¡¡¡¡ÏÂÔر¾ÎÄÔ´´úÂë

¡¡¡¡±¾ÎĽ«Õ¹Ê¾Ò»¸ö¿ªÔ´JavaScript¿â£¬¸Ã½Å±¾¿â¸øAJAXÓ¦ÓóÌÐò´øÀ´ÁËÊéÇ©ºÍºóÍË°´Å¥Ö§³Ö¡£ÔÚѧϰÍêÕâ¸ö½Ì³Ìºó£¬¿ª·¢ÈËÔ±½«Äܹ»»ñµÃ¶ÔÒ»¸öAJAXÎÊÌâµÄ½â¾ö·½°¸£¨ÉõÖÁÁ¬Google MapsºÍGmailÏÖÔÚ¶¼²»Ìṩ¸Ã½â¾ö·½°¸£©£ºÒ»¸öÇ¿´óµÄ¡¢¿ÉÓõÄÊéÇ©ºÍºóÍËÇ°½ø¹¦ÄÜ£¬Æä²Ù×÷ÐÐΪÈçͬÆäËûµÄWebÓ¦ÓóÌÐòÒ»Ñù¡£

¡¡¡¡±¾ÎĽ«²ûÊöÄ¿Ç°AJAXÓ¦ÓóÌÐòÔÚʹÓÃÊéÇ©ºÍºóÍË°´Å¥·½ÃæËùÃæÁÙµÄÑÏÖØÎÊÌ⣻չʾReally Simple History£¨RSH£©¿â¡ª¡ªÒ»¸ö¿ÉÒÔ½â¾öÒÔÉÏÎÊÌâµÄ¿ªÔ´¿ò¼Ü£¬²¢Ìṩ¼¸¸öÔËÐÐÖеÄÀý×Ó¡£

¡¡¡¡±¾ÎÄËùչʾµÄÕâ¸ö¿ò¼ÜµÄÖ÷Òª·¢Ã÷·ÖΪÁ½²¿·Ö¡£Ê×ÏÈÊÇÒ»¸öÒþ²ØµÄHTML±íµ¥£¬ÓÃÓÚ»º´æ´óÁ¿¶ÌÆڻỰµÄ¿Í»§¶ËÐÅÏ¢£»ÕâÖÖ»º´æ¹¦ÄÜΪҳÃæµ¼º½ÌṩÁËÇ¿´óµÄÖ§³Ö¡£Æä´ÎÊdz¬Á´½ÓêµãºÍÒþ²ØIframeµÄ×éºÏ£¬ËüÃDZ»Ç¶ÈëºóÍ˺ÍÇ°½ø°´Å¥£¬ÓÃÀ´½Ø»ñºÍ¼Ç¼ä¯ÀÀÆ÷µÄÀúÊ·¼Ç¼Ê¼þ¡£ÒÔÉÏÁ½ÖÖ¼¼Êõ¶¼±»°ü×°ÔÚÒ»¸ö¼òµ¥µÄJavaScript¿âÖÐÀ´¼ò»¯¿ª·¢¡£

¡¡¡¡ÎÊÌâ

¡¡¡¡ÊéÇ©ºÍºóÍË°´Å¥ÔÚ´«Í³µÄ¶àÒ³ÃæWebÓ¦ÓóÌÐòÖÐÔËÐе÷dz£ºÃ¡£µ±Óû§ä¯ÀÀwebÕ¾µãµÄʱºò£¬Æää¯ÀÀÆ÷µÄµØÖ·À¸¼Ç¼ËæеÄURL¶ø¸üУ¬ÕâЩ¼Ç¼¿ÉÒÔ±»Õ³Ìùµ½µç×ÓÓʼþ»òÕßÊéÇ©Öй©ÒÔºóʹÓ᣺óÍ˺ÍÇ°½ø°´Å¥Ò²¿ÉÒÔÕý³£²Ù×÷£¬Ê¹Óû§¿ÉÒÔÔÚ·ÃÎʹýµÄÒ³ÃæÖÐÏòÇ°»òÏòºó·­¶¯¡£

¡¡¡¡µ«ÊÇAJAXÓ¦ÓóÌÐòÈ´²»Ò»Ñù£¬ËüÃÇÊÇÔËÐÐÔÚµ¥¸öWebÒ³ÃæÖеĸ´ÔÓ³ÌÐò¡£ä¯ÀÀÆ÷²¢²»ÊÇΪÕâÀà³ÌÐò¶ø¹¹½¨µÄ¡ª¡ªÕâÀàWebÓ¦ÓóÌÐòÒѾ­¹ýʱ£¬ËüÃÇÔÚÿ´ÎÊó±êµã»÷µÄʱºò¶¼ÐèÒªÖØÐÂË¢ÐÂÕû¸öÒ³Ãæ¡£

¡¡¡¡ÔÚÕâÖÖÀàËÆÓÚGmailµÄAJAXÈí¼þÖУ¬ä¯ÀÀÆ÷µÄµØÖ·À¸ÔÚÓû§Ñ¡Ôñ¹¦Äܺ͸ıä³ÌÐò״̬µÄʱºò±£³Ö²»±ä£¬ÕâʹµÃÎÞ·¨ÔÚÌض¨µÄÓ¦ÓóÌÐòÊÓͼÖÐʹÓÃÊéÇ©¡£´ËÍ⣬Èç¹ûÓû§°´Ï¡°ºóÍË¡±°´Å¥À´¡°³·Ïú¡±ÉϴεIJÙ×÷£¬ËûÃǻᾪÆæµØ·¢ÏÖ£¬ä¯ÀÀÆ÷»áÍêÈ«À뿪¸ÃÓ¦ÓóÌÐòµÄWebÒ³Ãæ¡£

¡¡¡¡½â¾ö·½°¸

¡¡¡¡¿ªÔ´RSH¿ò¼Ü¿ÉÒÔ½â¾öÕâЩÎÊÌ⣬ËüΪAJAXÓ¦ÓóÌÐòÌṩÁËÊéÇ©ºÍ¿ØÖƺóÍË¡¢Ç°½ø°´Å¥µÄ¹¦ÄÜ¡£RSHÄ¿Ç°»¹´¦ÓÚBeta½×¶Î£¬¿ÉÒÔÔÚFirefox 1.0¡¢Netscape 7+¡¢Internet Explorer 6+µÈä¯ÀÀÆ÷ÉÏÔËÐУ»Ä¿Ç°»¹²»Ö§³ÖSafari¡£

¡¡¡¡Ä¿Ç°Óм¸¸öAJAX¿ò¼Ü¶ÔÊéÇ©ºÍÀúÊ·¼Ç¼ÎÊÌâÓÐËù°ïÖú£»µ«ÕâЩ¿ò¼ÜÄ¿Ç°¶¼Óм¸¸öÓÉÓÚʵÏÖ¶øÔì³ÉµÄÖØ´óBug¡£´ËÍ⣬ºÜ¶àAJAXÀúÊ·¼Ç¼¿ò¼Ü±»°ó¶¨µ½½Ï´óµÄ¿âÉÏ£¬ÀýÈçBackbaseºÍDojo£»ÕâЩ¿ò¼ÜΪAJAXÓ¦ÓóÌÐòÒýÈëÁËÍêÈ«²»Í¬µÄ±à³ÌÄ£ÐÍ£¬ÆÈʹ¿ª·¢ÈËԱʹÓÃȫеķ½Ê½À´»ñµÃÀúÊ·¼Ç¼¹¦ÄÜ¡£

¡¡¡¡Ïà½Ï֮ϣ¬RSHÊÇÒ»¸ö¿ÉÒÔ°üº¬ÔÚÏÖÓÐAJAXϵͳÖеļ òµ¥Ä£¿é¡£´ËÍ⣬RSH¿â²ÉÓÃÁËһЩ¼¼ÊõÒÔ±ÜÃâ²úÉúÓ°ÏìÆäËûÀúÊ·¼Ç¼¿ò¼ÜµÄBug¡£

¡¡¡¡RSH¿ò¼ÜÓÉÁ½¸öJavaScriptÀà×é³É£ºDhtmlHistoryºÍHistoryStorage¡£

¡¡¡¡DhtmlHistoryÀàΪAJAXÓ¦ÓóÌÐòÌṩÀúÊ·¼Ç¼³éÏó¡£AJAXÒ³ÃæʹÓÃadd()·½·¨Ìí¼ÓÀúÊ·¼Ç¼Ê¼þµ½ä¯ÀÀÆ÷£¬Ö¸¶¨ÐµĵØÖ·ºÍÏà¹ØµÄÀúÊ·¼Ç¼Êý¾Ý¡£DhtmlHistoryÀàʹÓÃÒ»¸öêɢÁУ¨Èç#new-location£©¸üÐÂä¯ÀÀÆ÷µ±Ç°µÄURL£¬Í¬Ê±°ÑÀúÊ·¼Ç¼Êý¾ÝºÍ¸ÃÐÂURL¹ØÁª¡£AJAXÓ¦ÓóÌÐò½«×Ô¼º×¢²áΪÀúÊ·¼Ç¼µÄ¼àÌýÆ÷£¬µ±Óû§Ê¹ÓúóÍ˺ÍÇ°½ø°´Å¥½øÐÐä¯ÀÀʱ£¬ÀúÊ·¼Ç¼Ê¼þ±»´¥·¢£¬Îªä¯ÀÀÆ÷ÌṩеÄλÖÃÒÔ¼°Óëadd()µ÷ÓÃÒ»Æð±£´æµÄÈκÎÀúÊ·¼Ç¼Êý¾Ý¡£

¡¡¡¡µÚ¶þ¸öÀࣺHistoryStorage£¬ÔÊÐí¿ª·¢ÈËÔ±±£´æÈÎÒâÊýÁ¿µÄÒÑ´æÀúÊ·¼Ç¼Êý¾Ý¡£ÔÚÆÕͨWebÒ³ÃæÖУ¬µ±Óû§µ¼º½µ½Ò»¸öеÄwebÕ¾µãʱ£¬ä¯ÀÀÆ÷жÔز¢Çå³ýwebÒ³ÃæÉϵÄËùÓÐÓ¦ÓóÌÐòºÍJavaScript״̬£»Èç¹ûÓû§ÓúóÍË°´Å¥·µ»Ø£¬ËùÓеÄÊý¾Ý¶¼¶ªÊ§ÁË¡£HistoryStorageÀàͨ¹ýÒ»¸ö°üº¬¼òµ¥É¢ÁÐ±í·½·¨£¨ÀýÈçput()¡¢get()¡¢hasKey()£©µÄAPIÀ´½â¾öÕâÀàÎÊÌâ¡£ÉÏÃæµÄ·½·¨ÔÊÐí¿ª·¢ÈËÔ±ÔÚÓû§À뿪WebÒ³ÃæÖ®ºó±£´æÈÎÒâÊýÁ¿µÄÊý¾Ý£»µ±Óû§°´ºóÍË°´Å¥ÖØзµ»Øʱ£¬ÀúÊ·¼Ç¼Êý¾Ý¿ÉÒÔͨ¹ýHistoryStorageÀàÀ´·ÃÎÊ¡£ÔÚÄÚ²¿£¬ÎÒÃÇͨ¹ýʹÓÃÒþ²ØµÄ±íµ¥×Ö¶ÎÀ´ÊµÏִ˹¦ÄÜ£¬ÕâÊÇÒòΪä¯ÀÀÆ÷»á×Ô¶¯±£´æ±íµ¥×Ö¶ÎÖеÄÖµ£¬ÉõÖÁÔÚÓû§À뿪WebÒ³ÃæµÄʱºòÒ²Èç´Ë¡£

¡¡¡¡Àý×Ó

¡¡¡¡ÈÃÎÒÃÇÏÈ´ÓÒ»¸ö¼òµ¥µÄÀý×Ó¿ªÊ¼¡£

¡¡¡¡Ê×ÏÈ£¬ÈκÎÐèҪʹÓÃRSH¿ò¼ÜµÄÒ³Ã涼±ØÐë°üº¬dhtmlHistory.js½Å±¾£º

<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tr> <td>£¼!-- Load the Really Simple
History framework --£¾
£¼script type="text/javascript"
src="../../framework/dhtmlHistory.js"£¾
£¼/script£¾</td></tr></table>
¡¡¡¡DHTMLÀúÊ·¼Ç¼ӦÓóÌÐòÒ²±ØÐëÔÚÓëAJAX WebÒ³ÃæÏàͬµÄĿ¼Ï°üº¬blank.htmlÎļþ£»Õâ¸öÎļþÓëRSH¿ò¼Ü´ò°üÔÚÒ»Æð£¬ÇÒ¶ÔÓÚInternet ExplorerÀ´ËµÊDZØÐèµÄ¡£Ë³±ãÌáһϣ¬RSHʹÓÃÒ»¸öÒþ²ØIframeÀ´¸ú×ÙºÍÌí¼ÓInternet ExplorerµÄÀúÊ·¼Ç¼±ä»¯£»Õâ¸öIframeÐèÒªÎÒÃÇÖ¸¶¨Ò»¸öʵ¼ÊµÄÎļþλÖòÅÄÜÕý³£¹¤×÷£¬Õâ¾ÍÊÇblank.html¡£

¡¡¡¡RSH¿ò¼Ü´´½¨ÁËÒ»¸ö½Ð×ödhtmlHistoryµÄÈ«¾Ö¶ÔÏó£¬ÕâÊDzÙ×Ýä¯ÀÀÆ÷ÀúÊ·¼Ç¼µÄÈë¿Úµã¡£Ê¹ÓÃdhtmlHistoryµÄµÚÒ»²½ÊÇÔÚWebÒ³Ãæ¼ÓÔØÍê³Éºó³õʼ»¯dhtmlHistory¶ÔÏó£º

<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tr> <td>window.onload = initialize;

function initialize() {
¡¡// initialize the DHTML History
¡¡// framework
¡¡dhtmlHistory.initialize();</td></tr></table>
¡¡¡¡È»ºó£¬¿ª·¢ÈËԱʹÓÃdhtmlHistory.addListener()·½·¨¶©ÔÄÀúÊ·¼Ç¼±ä»¯Ê¼þ¡£Õâ¸ö·½·¨´øÓÐÒ»¸öJavaScript»Øµ÷º¯Êý£¬µ±DHTMLÀúÊ·¼Ç¼±ä»¯Ê¼þ·¢Éúʱ£¬¸Ãº¯Êý½ÓÊÕÁ½¸ö²ÎÊý£ºÐµÄÒ³ÃæλÖÃÒÔ¼°ÈκοÉÓë¸Ãʼþ¹ØÁªµÄ¿ÉÑ¡ÀúÊ·¼Ç¼Êý¾Ý£º

<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tr> <td>window.onload = initialize;

function initialize() {
¡¡// initialize the DHTML History
¡¡// framework
¡¡dhtmlHistory.initialize();

¡¡// subscribe to DHTML history change
¡¡// events
¡¡dhtmlHistory.addListener(historyChange);</td></tr></table>
¡¡¡¡historyChange()·½·¨ºÜ¼òµ¥£¬¸Ãº¯ÊýÔÚÓû§µ¼º½µ½Ò»¸öÐÂλÖúó½ÓÊÕnewLocationÒÔ¼°ÈκÎÓë¸Ãʼþ¹ØÁªµÄ¿ÉÑ¡historyData¡£

<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tr> <td>/** Our callback to receive history change
events. */
function historyChange(newLocation,
historyData) {
¡¡debug("A history change has occurred: "
¡¡¡¡+ "newLocation="+newLocation
¡¡¡¡+ ", historyData="+historyData,
¡¡¡¡true);
}</td></tr></table>
¡¡¡¡ÉÏÃæÓõ½µÄdebug()·½·¨ÊǶ¨ÒåÔÚʾÀýÔ´ÎļþÖеÄÒ»¸öʵÓú¯Êý£¬ËüÓëÍêÕûʾÀý´ò°üÔÚÒ»Æð¹©ÏÂÔØ¡£debug()Ö»ÊÇÓÃÀ´½«ÏûÏ¢´òÓ¡µ½WebÒ³ÃæÉÏ£»µÚ¶þ¸ö²¼¶ûÐͲÎÊý£¨ÔÚÉÏÊö´úÂëÖÐֵΪtrue£©¿ØÖÆÊÇ·ñÔÚ´òӡеĵ÷ÊÔÏûϢ֮ǰÇå³ýÔ­ÓеÄÈ«²¿ÏûÏ¢¡£

¡¡¡¡¿ª·¢ÈËԱʹÓÃadd()·½·¨Ìí¼ÓÀúÊ·¼Ç¼Ê¼þ¡£Ìí¼ÓÀúÊ·¼Ç¼Ê¼þÉ漰ΪÀúÊ·¼Ç¼±ä»¯Ö¸¶¨Ò»¸öеØÖ·£¬ÀýÈçedit:SomePage£¬ÒÔ¼°Ìṩһ¸öºÍ¸ÃʼþÒ»Æð±£´æµÄ¿ÉÑ¡historyDataÖµ¡£

<table borderColor=#cccccc width="90%" align=center bgColor=#e3e3e3 border=1> <tr> <td>window.onload = initialize;

function initialize() {
¡¡// initialize the DHTML History
¡¡// framework
¡¡dhtmlHistory.initialize();

¡¡// subscribe to DHTML history change
¡¡// events
¡¡dhtmlHistory.addListener(historyChange);

¡¡// if this is the first time we have
¡¡// loaded the page...
¡¡if (dhtmlHistory.isFirstLoad()) {
¡¡¡¡debug("Adding values to browser " + "history", false);
¡¡¡¡// start adding history
¡¡¡¡dhtmlHistory.add("helloworld", "Hello World Data");
¡¡¡¡dhtmlHistory.add("foobar", 33);
¡¡¡¡dhtmlHistory.add("boobah", true);

¡¡¡¡var complexObject = new Object();
¡¡¡¡complexObject.value1 = "This is the first value";
¡¡¡¡complexObject.value2 = "This is the second data";
¡¡¡¡complexObject.value3 = new Array();
¡¡¡¡complexObject.value3[0] = "array 1";
¡¡¡¡complexObject.value3[1] = "array 2";

¡¡¡¡dhtmlHistory.add("complexObject", complexObject);</td></tr></table>
¡¡¡¡ÔÚadd()±»µ÷ÓÃÖ®ºó£¬ÐµĵØÖ·½«Á¢¼´×÷Ϊһ¸öêֵ£¨Á´½ÓµØÖ·£©ÏÔʾÔÚä¯ÀÀÆ÷µÄURLµØÖ·À¸ÖС£ÀýÈ磬¶ÔµØַΪhttp://codinginparadise.org/my_ajax_appµÄAJAX WebÒ³Ãæµ÷ÓÃdhtmlHistory.add("helloworld", "Hello World Data")Ö®ºó£¬Óû§½«»áÔÚÆää¯ÀÀÆ÷URLµØÖ·À¸Öп´µ½ÈçϵĵØÖ·£º

¡¡¡¡http://codinginparadise.org/my_ajax_app#helloworld

¡¡¡¡È»ºóÓû§¿ÉÒÔ½«Õâ¸öÒ³Ãæ×ö³ÉÊéÇ©£¬Èç¹ûÒÔºóÓõ½Õâ¸öÊéÇ©£¬AJAXÓ¦ÓóÌÐò¿ÉÒÔ¶ÁÈ¡#helloworldÖµ£¬²¢ÓÃËüÀ´³õʼ»¯WebÒ³Ã档ɢÁкóÃæµÄµØÖ·ÖµÊÇRSH¿ò¼Ü¿ÉÒÔ͸Ã÷±àÂëºÍ½âÂëµÄURLµØÖ·¡£


¡ü·µ»ØĿ¼
ǰһƪ: ʵÏÖ¸ßЧJava±à³Ì¹æ·¶µÄʮһÌõ»ù´¡¹æÔò
ºóһƪ: ʹÓÃJavaScriptºÍAJAX·¢³öÒì²½ÇëÇó