¶ÔÓںܶà Web ¿ª·¢ÈËÔ±À´Ëµ£¬Ö»ÐèÒªÉú³É¼òµ¥µÄÇëÇó²¢½ÓÊÕ¼òµ¥µÄÏìÓ¦¼´¿É£»µ«ÊǶÔÓÚÏ£ÍûÕÆÎÕ Ajax µÄ¿ª·¢ÈËÔ±À´Ëµ£¬±ØÐëҪȫÃæÀí½â HTTP ״̬´úÂë¡¢¾ÍÐ÷״̬ºÍ XMLHttpRequest ¶ÔÏó¡£ÔÚ±¾ÎÄÖУ¬Brett McLaughlin ½«ÏòÄú½éÉܸ÷ÖÖ״̬´úÂ룬²¢Õ¹Ê¾ä¯ÀÀÆ÷ÈçºÎ¶ÔÆä½øÐд¦Àí£¬±¾ÎÄ»¹¸ø³öÁËÔÚ Ajax ÖÐʹÓõıȽÏÉÙ¼ûµÄ HTTP ÇëÇó¡£
ÔÚ±¾ÏµÁÐµÄ ÉÏƪÎÄÕ ÖУ¬ÎÒÃǽ«Ïêϸ½éÉÜ XMLHttpRequest ¶ÔÏó£¬ËüÊÇ Ajax Ó¦ÓóÌÐòµÄÖÐÐÄ£¬¸ºÔð´¦Àí·þÎñÆ÷¶ËÓ¦ÓóÌÐòºÍ½Å±¾µÄÇëÇ󣬲¢´¦Àí´Ó·þÎñÆ÷¶Ë×é¼þ·µ»ØµÄÊý¾Ý¡£ÓÉÓÚËùÓÐµÄ Ajax Ó¦ÓóÌÐò¶¼ÒªÊ¹Óà XMLHttpRequest ¶ÔÏó£¬Òò´ËÄú¿ÉÄÜ»áÏ£ÍûÊìϤÕâ¸ö¶ÔÏ󣬴ӶøÄܹ»Èà Ajax Ö´ÐеøüºÃ¡£
ÔÚ±¾ÎÄÖУ¬ÎÒ½«ÔÚÉÏһƪÎÄÕµĻù´¡ÉÏÖصã½éÉÜÕâ¸öÇëÇó¶ÔÏóµÄ 3 ¸ö¹Ø¼ü²¿·ÖµÄÄÚÈÝ£º
¡¤HTTP ¾ÍÐ÷״̬
¡¤HTTP ״̬´úÂë
¡¤¿ÉÒÔÉú³ÉµÄÇëÇóÀàÐÍ
ÕâÈý²¿·ÖÄÚÈݶ¼ÊÇÔÚ¹¹ÔìÒ»¸öÇëÇóʱËùÒª¿¼ÂǵÄÒòËØ£»µ«ÊǽéÉÜÕâЩÖ÷ÌâµÄÄÚÈÝÌ«ÉÙÁË¡£È»¶ø£¬Èç¹ûÄú²»½ö½öÊÇÏëÁ˽â Ajax ±à³ÌµÄ³£Ê¶£¬¶øÊÇÏ£ÍûÁ˽â¸ü¶àÄÚÈÝ£¬¾ÍÐèÒªÊìϤ¾ÍÐ÷״̬¡¢×´Ì¬´úÂëºÍÇëÇó±¾ÉíµÄÄÚÈÝ¡£µ±Ó¦ÓóÌÐò³öÏÖÎÊÌâʱ ¡ª¡ª ÕâÖÖÎÊÌâ×ÜÊÇ´æÔÚ ¡ª¡ª ÄÇôÈç¹ûÄܹ»ÕýÈ·Àí½â¾ÍÐ÷״̬¡¢ÈçºÎÉú³ÉÒ»¸ö HEAD ÇëÇó»òÕß 400 µÄ״̬´úÂëµÄÈ·Çк¬Ò壬¾Í¿ÉÒÔÔÚ 5 ·ÖÖÓÄÚµ÷ÊÔ³öÎÊÌ⣬¶ø²»ÊÇÔÚ¸÷ÖÖ´ìÕÛºÍÀ§»óÖжȹý 5 ¸öСʱ¡£
ÏÂÃæÈÃÎÒÃÇÊ×ÏÈÀ´¿´Ò»Ï HTTP ¾ÍÐ÷״̬¡£
ÉîÈëÁ˽â HTTP ¾ÍÐ÷״̬
ÄúÓ¦¸Ã»¹¼ÇµÃÔÚÉÏһƪÎÄÕÂÖÐ XMLHttpRequest ¶ÔÏóÓÐÒ»¸öÃûΪ readyState µÄÊôÐÔ¡£Õâ¸öÊôÐÔÈ·±£·þÎñÆ÷ÒѾÍê³ÉÁËÒ»¸öÇëÇó£¬Í¨³£»áʹÓÃÒ»¸ö»Øµ÷º¯Êý´Ó·þÎñÆ÷ÖжÁ³öÊý¾ÝÀ´¸üРWeb ±íµ¥»òÒ³ÃæµÄÄÚÈÝ¡£Çåµ¥ 1 ¸ø³öÁËÒ»¸ö¼òµ¥µÄÀý×Ó£¨ÕâÒ²ÊDZ¾ÏµÁеÄÉÏһƪÎÄÕÂÖеÄÒ»¸öÀý×Ó ¡ª¡ª Çë²Î¼û ²Î¿¼×ÊÁÏ£©¡£
XMLHttpRequest »ò XMLHttp£º»»Ãûõ¹å
Microsoft™ ºÍ Internet Explorer ʹÓÃÁËÒ»¸öÃûΪ XMLHttp µÄ¶ÔÏ󣬶ø²»ÊÇ XMLHttpRequest ¶ÔÏ󣬶ø Mozilla¡¢Opera¡¢Safari ºÍ ´ó²¿·Ö·Ç Microsoft ä¯ÀÀÆ÷¶¼Ê¹ÓõÄÊǺóÕß¡£ÎªÁ˼òµ¥ÐÔÆð¼û£¬ÎÒ½«ÕâÁ½¸ö¶ÔÏ󶼼òµ¥µØ³ÆΪ XMLHttpRequest¡£Õâ¼È·ûºÏÎÒÃÇÔÚ Web ÉÏ¿´µ½µÄÇé¿ö£¬ÓÖ·ûºÏ Microsoft ÔÚ Internet Explorer 7.0 ÖÐʹÓà XMLHttpRequest ×÷ΪÇëÇó¶ÔÏóµÄÒâͼ¡££¨ÓйØÕâ¸öÎÊÌâµÄ¸ü¶àÄÚÈÝ£¬Çë²Î¼û µÚ 2 ²¿·Ö¡££©
Çåµ¥ 1. Ôڻص÷º¯ÊýÖд¦Àí·þÎñÆ÷µÄÏìÓ¦
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);
}
}
ÕâÏÔÈ»ÊǾÍÐ÷״̬×î³£¼û£¨Ò²ÊÇ×î¼òµ¥£©µÄÓ÷¨¡£ÕýÈçÄú´ÓÊý×Ö "4" ÖпÉÒÔ¿´³öµÄÒ»Ñù£¬»¹ÓÐÆäËû¼¸¸ö¾ÍÐ÷״̬£¨ÄúÔÚÉÏһƪÎÄÕÂÖÐÒ²¿´µ½¹ýÕâ¸öÇåµ¥ ¡ª¡ª Çë²Î¼û ²Î¿¼×ÊÁÏ£©£º
¡¤0£ºÇëÇóδ³õʼ»¯£¨»¹Ã»Óе÷Óà open()£©¡£
¡¤1£ºÇëÇóÒѾ½¨Á¢£¬µ«ÊÇ»¹Ã»Óз¢ËÍ£¨»¹Ã»Óе÷Óà send()£©¡£
¡¤2£ºÇëÇóÒÑ·¢ËÍ£¬ÕýÔÚ´¦ÀíÖУ¨Í¨³£ÏÖÔÚ¿ÉÒÔ´ÓÏìÓ¦ÖлñÈ¡ÄÚÈÝÍ·£©¡£
¡¤3£ºÇëÇóÔÚ´¦ÀíÖУ»Í¨³£ÏìÓ¦ÖÐÒÑÓв¿·ÖÊý¾Ý¿ÉÓÃÁË£¬µ«ÊÇ·þÎñÆ÷»¹Ã»ÓÐÍê³ÉÏìÓ¦µÄÉú³É¡£
¡¤4£ºÏìÓ¦ÒÑÍê³É£»Äú¿ÉÒÔ»ñÈ¡²¢Ê¹Ó÷þÎñÆ÷µÄÏìÓ¦ÁË¡£
Èç¹ûÄúÏ£Íû²»½ö½öÊÇÁ˽â Ajax ±à³ÌµÄ»ù±¾ÖªÊ¶£¬ÄÇô¾Í²»µ«ÐèÒªÖªµÀÕâЩ״̬£¬Á˽âÕâЩ״̬ÊǺÎʱ³öÏֵģ¬ÒÔ¼°ÈçºÎÀ´Ê¹ÓÃÕâЩ״̬¡£Ê×ÏÈ£¬ÄúÐèҪѧϰÔÚÿÖÖ¾ÍÐ÷״̬Ï¿ÉÄÜÅöµ½µÄÊÇÄÄÖÖÇëÇó״̬¡£²»ÐÒµÄÊÇ£¬ÕâÒ»µã²¢²»Ö±¹Û£¬¶øÇÒ»áÉæ¼°¼¸ÖÖÌØÊâµÄÇé¿ö¡£
ÒþÃؾÍÐ÷״̬
µÚÒ»ÖÖ¾ÍÐ÷״̬µÄÌصãÊÇ readyState ÊôÐÔΪ 0£¨readyState == 0£©£¬±íʾδ³õʼ»¯×´Ì¬¡£Ò»µ©¶ÔÇëÇó¶ÔÏóµ÷Óà open() Ö®ºó£¬Õâ¸öÊôÐԾͱ»ÉèÖÃΪ 1¡£ÓÉÓÚÄúͨ³£¶¼ÊÇÔÚÒ»¶ÔÇëÇó½øÐгõʼ»¯Ö®ºó¾ÍÁ¢¼´µ÷Óà open()£¬Òò´ËºÜÉٻῴµ½ readyState == 0 µÄ״̬¡£ÁíÍ⣬δ³õʼ»¯µÄ¾ÍÐ÷״̬ÔÚʵ¼ÊµÄÓ¦ÓóÌÐòÖÐÊÇûÓÐÕæÕýµÄÓô¦µÄ¡£
²»¹ýΪÁËÂú×ãÎÒÃǵÄÐËȤ£¬Çë²Î¼û Çåµ¥ 2 µÄÄÚÈÝ£¬ÆäÖÐÏÔʾÁËÈçºÎÔÚ readyState ±»ÉèÖÃΪ 0 ʱÀ´»ñÈ¡ÕâÖÖ¾ÍÐ÷״̬¡£
Çåµ¥ 2. »ñÈ¡ 0 ¾ÍÐ÷״̬
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);
}
ÔÚÕâ¸ö¼òµ¥µÄÀý×ÓÖУ¬getSalesData() ÊÇ Web Ò³Ãæµ÷ÓÃÀ´Æô¶¯ÇëÇó£¨ÀýÈçµã»÷Ò»¸ö°´Å¥Ê±£©ËùʹÓõĺ¯Êý¡£×¢ÒâÄú±ØÐëÔÚµ÷Óà open()֮ǰ À´²é¿´¾ÍÐ÷״̬¡£Í¼ 1 ¸ø³öÁËÔËÐÐÕâ¸öÓ¦ÓóÌÐòµÄ½á¹û¡£
ͼ 1. ¾ÍÐ÷״̬ 0
ÏÔÈ»£¬Õâ²¢²»ÄÜΪÄú´øÀ´¶àÉٺô¦£»ÐèҪȷ±£ ÉÐδ µ÷Óà open() º¯ÊýµÄÇé¿öºÜÉÙ¡£ÔÚ´ó²¿·Ö Ajax ±à³ÌµÄÕæʵÇé¿öÖУ¬ÕâÖÖ¾ÍÐ÷״̬µÄΨһÓ÷¨¾ÍÊÇʹÓÃÏàͬµÄ XMLHttpRequest ¶ÔÏóÔÚ¶à¸öº¯ÊýÖ®¼äÉú³É¶à¸öÇëÇó¡£ÔÚÕâÖÖ£¨²»³£¼ûµÄ£©Çé¿öÖУ¬Äú¿ÉÄÜ»áÔÚÉú³ÉÐÂÇëÇó֮ǰϣÍûÈ·±£ÇëÇó¶ÔÏóÊÇ´¦ÓÚδ³õʼ»¯×´Ì¬£¨readyState == 0£©¡£Õâʵ¼ÊÉÏÊÇҪȷ±£ÁíÍâÒ»¸öº¯ÊýûÓÐͬʱʹÓÃÕâ¸ö¶ÔÏó¡£
²é¿´ÕýÔÚ´¦ÀíµÄÇëÇóµÄ¾ÍÐ÷״̬
³ýÁË 0 ¾ÍÐ÷״̬֮Í⣬ÇëÇó¶ÔÏó»¹ÐèÒªÒÀ´Î¾ÀúµäÐ͵ÄÇëÇóºÍÏìÓ¦µÄÆäËû¼¸ÖÖ¾ÍÐ÷״̬£¬×îºó²ÅÒÔ¾ÍÐ÷״̬ 4 µÄÐÎʽ½áÊø¡£Õâ¾ÍÊÇΪʲôÄúÔڴ󲿷ֻص÷º¯ÊýÖж¼¿ÉÒÔ¿´µ½ if (request.readyState == 4) ÕâÐдúÂ룻ËüÈ·±£·þÎñÆ÷ÒѾÍê³É¶ÔÇëÇóµÄ´¦Àí£¬ÏÖÔÚ¿ÉÒÔ°²È«µØ¸üРWeb Ò³Ãæ»ò¸ù¾Ý´Ó·þÎñÆ÷·µ»ØÀ´µÄÊý¾ÝÀ´½øÐвÙ×÷ÁË¡£
Òª²é¿´ÕâÖÖ״̬·¢ÉúµÄ¹ý³Ì·Ç³£¼òµ¥¡£Èç¹û¾ÍÐ÷״̬Ϊ 4£¬ÎÒÃDz»½öÒªÔËÐлص÷º¯ÊýÖеĴúÂ룬¶øÇÒ»¹ÒªÔÚÿ´Îµ÷Óûص÷º¯Êýʱ¶¼Êä³ö¾ÍÐ÷״̬¡£ Çåµ¥ 3 ¸ø³öÁËÒ»¸öʵÏÖÕâÖÖ¹¦ÄܵÄÀý×Ó¡£
µ± 0 µÈÓÚ 4 ʱ
ÔÚ¶à¸ö JavaScript º¯Êý¶¼Ê¹ÓÃÏàͬµÄÇëÇó¶ÔÏóʱ£¬ÄúÐèÒª¼ì²é¾ÍÐ÷״̬ 0 À´È·±£Õâ¸öÇëÇó¶ÔÏóûÓÐÕýÔÚʹÓã¬ÕâÖÖ»úÖÆ»á²úÉúÎÊÌâ¡£ÓÉÓÚ readyState == 4 ±íʾһ¸öÒÑÍê³ÉµÄÇëÇó£¬Òò´ËÄú¾³£»á·¢ÏÖÄÇЩĿǰûÔÚʹÓõĴ¦ÓÚ¾ÍÐ÷״̬µÄÇëÇó¶ÔÏóÈÔÈ»±»ÉèÖóÉÁË 4 ¡ª¡ª ÕâÊÇÒòΪ´Ó·þÎñÆ÷·µ»ØÀ´µÄÊý¾ÝÒѾʹÓùýÁË£¬µ«ÊÇ´ÓËüÃDZ»ÉèÖÃΪ¾ÍÐ÷״̬֮ºó¾ÍûÓнøÐÐÈκα仯¡£ÓÐÒ»¸öº¯Êý abort() »áÖØÐÂÉèÖÃÇëÇó¶ÔÏ󣬵«ÊÇÕâ¸öº¯ÊýÈ´²»ÊÇÕæÕýΪÁËÕâ¸öÄ¿µÄ¶øʹÓõġ£Èç¹ûÄú ±ØÐë ʹÓöà¸öº¯Êý£¬×îºÃÊÇΪÿ¸öº¯Êý¶¼´´½¨²¢Ê¹ÓÃÒ»¸öº¯Êý£¬¶ø²»ÊÇÔÚ¶à¸öº¯ÊýÖ®¼ä¹²ÏíÏàͬµÄ¶ÔÏó¡£
Çåµ¥ 3. ²é¿´¾ÍÐ÷״̬
function updatePage() {
// Output the current ready state
alert("updatePage() called with ready state of " + request.readyState);
}
Èç¹ûÄú²»È·¶¨ÈçºÎÔËÐÐÕâ¸öº¯Êý£¬¾ÍÐèÒª´´½¨Ò»¸öº¯Êý£¬È»ºóÔÚ Web Ò³ÃæÖе÷ÓÃÕâ¸öº¯Êý£¬²¢ÈÃËüÏò·þÎñÆ÷¶ËµÄ×é¼þ·¢ËÍÒ»¸öÇëÇó£¨ÀýÈç Çåµ¥ 2 ¸ø³öµÄº¯Êý£¬»ò±¾ÏµÁÐÎÄÕÂµÄµÚ 1 ²¿·ÖºÍµÚ 2 ²¿·ÖÖиø³öµÄÀý×Ó£©¡£È·±£ÔÚ½¨Á¢ÇëÇóʱ£¬½«»Øµ÷º¯ÊýÉèÖÃΪ updatePage()£»ÒªÊµÏÖÕâÖÖÉèÖ㬿ÉÒÔ½«ÇëÇó¶ÔÏóµÄ onreadystatechange ÊôÐÔÉèÖÃΪ updatePage()¡£
Õâ¶Î´úÂë¾ÍÊÇ onreadystatechange ÒâÒåµÄÒ»¸öÈ·ÇÐչʾ ¡ª¡ª ÿ´ÎÇëÇóµÄ¾ÍÐ÷״̬·¢Éú±ä»¯Ê±£¬¾Íµ÷Óà updatePage()£¬È»ºóÎÒÃǾͿÉÒÔ¿´µ½Ò»¸ö¾¯¸æÁË¡£Í¼ 2 ¸ø³öÁËÒ»¸öµ÷ÓÃÕâ¸öº¯ÊýµÄÀý×Ó£¬ÆäÖоÍÐ÷״̬Ϊ 1¡£
ͼ 2. ¾ÍÐ÷״̬ 1
Äú¿ÉÒÔ×Ô¼º³¢ÊÔÔËÐÐÕâ¶Î´úÂë¡£½«Æä·ÅÈë Web Ò³ÃæÖУ¬È»ºó¼¤»îʼþ´¦Àí³ÌÐò£¨µ¥»÷°´Å¥£¬ÔÚÓòÖ®¼ä°´ tab ¼üÇл»½¹µã£¬»òÕßʹÓÃÉèÖõÄÈκη½·¨À´´¥·¢ÇëÇ󣩡£Õâ¸ö»Øµ÷º¯Êý»áÔËÐжà´Î ¡ª¡ª ÿ´Î¾ÍÐ÷״̬¶¼»á¸Ä±ä ¡ª¡ª Äú¿ÉÒÔ¿´µ½Ã¿¸ö¾ÍÐ÷״̬µÄ¾¯¸æ¡£ÕâÊǸú×ÙÇëÇóËù¾ÀúµÄ¸÷¸ö½×¶ÎµÄ×îºÃ·½·¨¡£
ä¯ÀÀÆ÷µÄ²»Ò»ÖÂÐÔ
ÔÚ¶ÔÕâ¸ö¹ý³ÌÓÐÒ»¸ö»ù±¾µÄÁ˽âÖ®ºó£¬ÇëÊÔ×Å´Ó¼¸¸ö²»Í¬µÄä¯ÀÀÆ÷ÖзÃÎÊÄúµÄÒ³Ãæ¡£ÄúÓ¦¸Ã»á×¢Òâµ½¸÷¸öä¯ÀÀÆ÷ÈçºÎ´¦ÀíÕâЩ¾ÍÐ÷״̬²¢²»Ò»Ö¡£ÀýÈ磬ÔÚ Firefox 1.5 ÖУ¬Äú»á¿´µ½ÒÔϾÍÐ÷״̬£º
¡¤1
¡¤2
¡¤3
¡¤4
Õâ²¢²»Ææ¹Ö£¬ÒòΪÿ¸öÇëÇó״̬¶¼ÔÚÕâÀï±íʾ³öÀ´ÁË¡£È»¶ø£¬Èç¹ûÄúʹÓà Safari À´·ÃÎÊÏàͬµÄÓ¦ÓóÌÐò£¬¾ÍÓ¦¸Ã¿´µ½ ¡ª¡ª »òÕß¿´²»µ½ ¡ª¡ª һЩÓÐȤµÄÊÂÇé¡£ÏÂÃæÊÇÔÚ Safari 2.0.1 Öп´µ½µÄ״̬£º
¡¤2
¡¤3
¡¤4
Safari ʵ¼ÊÉϰѵÚÒ»¸ö¾ÍÐ÷״̬¸ø¶ªÆúÁË£¬Ò²²¢Ã»ÓÐʲôÃ÷ÏÔµÄÔÒò˵Ã÷ΪʲôҪÕâÑù×ö£»²»¹ýÕâ¾ÍÊÇ Safari µÄ¹¤×÷·½Ê½¡£Õ⻹˵Ã÷ÁËÒ»¸öÖØÒªµÄÎÊÌ⣺¾¡¹ÜÔÚʹÓ÷þÎñÆ÷ÉϵÄÊý¾Ý֮ǰȷ±£ÇëÇóµÄ״̬Ϊ 4 ÊÇÒ»¸öºÃÖ÷Ò⣬µ«ÊÇÒÀÀµÓÚÿ¸ö¹ý¶ÉÆÚ¾ÍÐ÷״̬±àдµÄ´úÂëµÄÈ·»áÔÚ²»Í¬µÄä¯ÀÀÆ÷Éϵõ½²»Í¬µÄ½á¹û¡£
ÀýÈ磬ÔÚʹÓà Opera 8.5 ʱ£¬ËùÏÔʾµÄ¾ÍÐ÷״̬Çé¿ö¾Í¸ü¼ÓÔã¸âÁË£º
¡¤3
¡¤4
×îºó£¬Internet Explorer »áÏÔʾÈçÏÂ״̬£º
¡¤1
¡¤2
¡¤3
¡¤4
Èç¹ûÄúÅöµ½ÇëÇó·½ÃæµÄÎÊÌ⣬Õâ¾ÍÊÇÓÃÀ´·¢ÏÖÎÊÌâµÄ Ê×ÒªÖ®´¦¡£×îºÃµÄ·½Ê½ÊÇÔÚ Internet Explorer ºÍ Firefox ¶¼½øÐÐһϲâÊÔ ¡ª¡ª Äú»á¿´µ½ËùÓÐÕâ 4 ÖÖ״̬£¬²¢¿ÉÒÔ¼ì²éÇëÇóµÄÿ¸ö״̬Ëù´¦µÄÇé¿ö¡£
½ÓÏÂÀ´ÎÒÃÇÔÙÀ´¿´Ò»ÏÂÏìÓ¦¶ËµÄÇé¿ö¡£
ÏÔ΢¾µÏµÄÏìÓ¦Êý¾Ý
Ò»µ©ÎÒÃÇÀí½âÔÚÇëÇó¹ý³ÌÖз¢ÉúµÄ¸÷¸ö¾ÍÐ÷״̬֮ºó£¬½ÓÏÂÀ´¾Í¿ÉÒÔÀ´¿´Ò»Ï XMLHttpRequest ¶ÔÏóµÄÁíÍâÒ»¸ö·½ÃæÁË ¡ª¡ª responseText ÊôÐÔ¡£»ØÏëÒ»ÏÂÔÚÉÏһƪÎÄÕÂÖÐÎÒÃǽéÉܹýµÄÄÚÈÝ£¬¾Í¿ÉÒÔÖªµÀÕâ¸öÊôÐÔÓÃÀ´´Ó·þÎñÆ÷ÉÏ»ñÈ¡Êý¾Ý¡£Ò»µ©·þÎñÆ÷Íê³É¶ÔÇëÇóµÄ´¦ÀíÖ®ºó£¬¾Í¿ÉÒÔ½«ÏìÓ¦ÇëÇóÊý¾ÝËùÐèÒªµÄÈκÎÊý¾Ý·Åµ½ÇëÇóµÄ responseText ÖÐÁË¡£È»ºó»Øµ÷º¯Êý¾Í¿ÉÒÔʹÓÃÕâЩÊý¾Ý£¬Èç Çåµ¥ 1 ºÍ Çåµ¥ 4 Ëùʾ¡£
Çåµ¥ 4. ʹÓ÷þÎñÆ÷ÉÏ·µ»ØµÄÏìÓ¦
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);
}
Çåµ¥ 1 Ï൱¼òµ¥£»Çåµ¥ 4 ÉÔ΢Óе㸴ÔÓ£¬µ«ÊÇËüÃÇÔÚ¿ªÊ¼Ê±¶¼Òª¼ì²é¾ÍÐ÷״̬£¬²¢»ñÈ¡ responseText ÊôÐÔµÄÖµ¡£
²é¿´ÇëÇóµÄÏìÓ¦Îı¾
Óë¾ÍÐ÷״̬ÀàËÆ£¬responseText ÊôÐÔµÄÖµÔÚÕû¸öÇëÇóµÄÉúÃüÖÜÆÚÖÐÒ²»á·¢Éú±ä»¯¡£Òª²é¿´ÕâÖֱ仯£¬ÇëʹÓÃÈç Çåµ¥ 5 ËùʾµÄ´úÂëÀ´²âÊÔÇëÇóµÄÏìÓ¦Îı¾£¬ÒÔ¼°ËüÃǵľÍÐ÷״̬¡£
Çåµ¥ 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 + "'");
}
ÏÖÔÚÔÚä¯ÀÀÆ÷Öдò¿ª Web Ó¦ÓóÌÐò£¬²¢¼¤»îÄúµÄÇëÇó¡£Òª¸üºÃµØ¿´µ½Õâ¶Î´úÂëµÄЧ¹û£¬ÇëʹÓà Firefox »ò Internet Explorer£¬ÒòΪÕâÁ½¸öä¯ÀÀÆ÷¶¼¿ÉÒÔ±¨¸æ³öÇëÇó¹ý³ÌÖÐËùÓпÉÄܵľÍÐ÷״̬¡£ÀýÈçÔÚ¾ÍÐ÷״̬ 2 ÖУ¬¾ÍûÓж¨Òå responseText £¨Çë²Î¼û ͼ 3£©£»Èç¹û JavaScript ¿ØÖÆ̨ҲÒѾ´ò¿ªÁË£¬Äú¾Í»á¿´µ½Ò»¸ö´íÎó¡£
ͼ 3. ¾ÍÐ÷״̬Ϊ 2 µÄÏìÓ¦Îı¾
²»¹ýÔÚ¾ÍÐ÷״̬ 3 ÖУ¬·þÎñÆ÷ÒѾÔÚ responseText ÊôÐÔÖзÅÉÏÁËÒ»¸öÖµ£¬ÖÁÉÙÔÚÕâ¸öÀý×ÓÖÐÊÇÕâÑù£¨Çë²Î¼û ͼ 4£©¡£
ͼ 4. ¾ÍÐ÷״̬Ϊ 3 µÄÏìÓ¦Îı¾
Äú»á¿´µ½¾ÍÐ÷״̬Ϊ 3 µÄÏìÓ¦ÔÚÿ¸ö½Å±¾¡¢Ã¿¸ö·þÎñÆ÷ÉõÖÁÿ¸öä¯ÀÀÆ÷É϶¼ÊDz»Ò»ÑùµÄ¡£²»¹ý£¬ÕâÔÚµ÷ÊÔÓ¦ÓóÌÐòÖÐÒÀÈ»ÊǷdz£ÓÐÓõġ£
»ñÈ¡°²È«Êý¾Ý
ËùÓеÄÎĵµºÍ¹æ·¶¶¼Ç¿µ÷£¬Ö»ÓÐÔÚ¾ÍÐ÷״̬Ϊ 4 ʱÊý¾Ý²Å¿ÉÒÔ°²È«Ê¹Óá£ÏàÐÅÎÒ£¬µ±¾ÍÐ÷״̬Ϊ 3 ʱ£¬ÄúºÜÉÙÄÜÕÒµ½ÎÞ·¨´Ó responseText ÊôÐÔ»ñÈ¡Êý¾ÝµÄÇé¿ö¡£È»¶ø£¬ÔÚÓ¦ÓóÌÐòÖн«×Ô¼ºµÄÂß¼ÒÀÀµÓÚ¾ÍÐ÷״̬ 3 ¿É²»ÊÇʲôºÃÖ÷Òâ ¡ª¡ª Ò»µ©Äú±àдÁËÒÀÀµÓÚ¾ÍÐ÷״̬ 3 µÄÍêÕûÊý¾ÝµÄµÄ´úÂ룬¼¸ºõ¾ÍÒª×Ô¼ºÀ´¸ºÔðµ±Ê±µÄÊý¾Ý²»ÍêÕûÎÊÌâÁË¡£
±È½ÏºÃµÄ×ö·¨ÊÇÏòÓû§ÌṩһЩ·´À¡£¬ËµÃ÷ÔÚ´¦ÓÚ¾ÍÐ÷״̬ 3 ʱ£¬ºÜ¿ì¾Í»áÓÐÏìÓ¦ÁË¡£¾¡¹ÜʹÓà alert() Ö®ÀàµÄº¯ÊýÏÔÈ»²»ÊÇʲôºÃÖ÷Òâ ¡ª¡ª ʹÓà Ajax È»ºóʹÓÃÒ»¸ö¾¯¸æ¶Ô»°¿òÀ´×èÈûÓû§ÏÔÈ»ÊÇ´íÎóµÄ ¡ª¡ª ²»¹ýÄú¿ÉÒÔÔÚ¾ÍÐ÷״̬·¢Éú±ä»¯Ê±¸üÐÂ±íµ¥»òÒ³ÃæÖеÄÓò¡£ÀýÈ磬¶ÔÓÚ¾ÍÐ÷״̬ 1 À´ËµÒª½«½ø¶ÈָʾÆ÷µÄ¿í¶ÈÉèÖÃΪ 25%£¬¶ÔÓÚ¾ÍÐ÷״̬ 2 À´ËµÒª½«½ø¶ÈָʾÆ÷µÄ¿í¶ÈÉèÖÃΪ 50%£¬¶ÔÓÚ¾ÍÐ÷״̬ 3 À´ËµÒª½«½ø¶ÈָʾÆ÷µÄ¿í¶ÈÉèÖÃΪ 75%£¬µ±¾ÍÐ÷״̬Ϊ 4 ʱ½«½ø¶ÈָʾÆ÷µÄ¿í¶ÈÉèÖÃΪ 100%£¨Íê³É£©¡£
µ±È»£¬ÕýÈçÄúÒѾ¿´µ½µÄÒ»Ñù£¬ÕâÖÖ·½·¨·Ç³£´ÏÃ÷£¬µ«ËüÊÇÒÀÀµÓÚä¯ÀÀÆ÷µÄ¡£ÔÚ Opera ÉÏ£¬ÄúÓÀÔ¶¶¼²»»á¿´µ½Ç°Á½¸ö¾ÍÐ÷״̬£¬¶øÔÚ Safari ÉÏÔòûÓеÚÒ»¸ö£¨1£©¡£ÓÉÓÚÕâ¸öÔÒò£¬ÎÒ½«Õâ¶Î´úÂëÁô×÷Á·Ï°£¬¶øûÓÐÔÚ±¾ÎÄÖаüÀ¨½øÀ´¡£
ÏÖÔÚÓ¦¸ÃÀ´¿´Ò»ÏÂ״̬´úÂëÁË¡£
ÉîÈëÁ˽â HTTP ״̬´úÂë
ÓÐÁ˾ÍÐ÷״̬ºÍÄúÔÚ Ajax ±à³Ì¼¼ÊõÖÐѧϰµ½µÄ·þÎñÆ÷µÄÏìÓ¦£¬Äú¾Í¿ÉÒÔΪ Ajax Ó¦ÓóÌÐòÌí¼ÓÁíÍâÒ»¼¶¸´ÔÓÐÔÁË ¡ª¡ª ÕâҪʹÓà HTTP ״̬´úÂë¡£ÕâЩ´úÂë¶ÔÓÚ Ajax À´Ëµ²¢Ã»ÓÐʲôÐÂÏÊ¡£´Ó Web ³öÏÖÒÔÀ´£¬ËüÃǾÍÒѾ´æÔÚÁË¡£ÔÚ Web ä¯ÀÀÆ÷ÖÐÄú¿ÉÄÜÒѾ¿´µ½¹ý¼¸¸ö״̬´úÂ룺
¡¤401£ºÎ´¾ÊÚȨ
¡¤403£º½ûÖ¹
¡¤404£ºÃ»ÕÒµ½
Äú¿ÉÒÔÕÒµ½¸ü¶àµÄ״̬´úÂ루ÍêÕûÇåµ¥Çë²Î¼û ²Î¿¼×ÊÁÏ£©¡£ÒªÎª Ajax Ó¦ÓóÌÐòÁíÍâÌí¼ÓÒ»²ã¿ØÖƺÍÏìÓ¦£¨ÒÔ¼°¸üΪ½¡×³µÄ´íÎó´¦Àí£©»úÖÆ£¬ÄúÐèÒªÊʵ±µØ²é¿´ÇëÇóºÍÏìÓ¦ÖеÄ״̬´úÂë¡£
200£ºÒ»ÇÐÕý³£
Ôںܶà Ajax Ó¦ÓóÌÐòÖУ¬Äú½«¿´µ½Ò»¸ö»Øµ÷º¯Êý£¬Ëü¸ºÔð¼ì²é¾ÍÐ÷״̬£¬È»ºó¼ÌÐøÀûÓôӷþÎñÆ÷ÏìÓ¦Öзµ»ØµÄÊý¾Ý£¬Èç Çåµ¥ 6 Ëùʾ¡£
Çåµ¥ 6. ºöÂÔ״̬´úÂëµÄ»Øµ÷º¯Êý
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 />");
}
}
Õâ¶ÔÓÚ Ajax ±à³ÌÀ´ËµÖ¤Ã÷ÊÇÒ»ÖÖ¶ÌÊÓ¶ø´íÎóµÄ·½·¨¡£Èç¹û½Å±¾ÐèÒªÈÏÖ¤£¬¶øÇëÇóȴûÓÐÌṩÓÐЧµÄÖ¤Ê飬ÄÇô·þÎñÆ÷¾Í»á·µ»ØÖîÈç 403 »ò 401 Ö®ÀàµÄ´íÎó´úÂ롣Ȼ¶ø£¬ÓÉÓÚ·þÎñÆ÷¶ÔÇëÇó½øÐÐÁËÓ¦´ð£¬Òò´Ë¾ÍÐ÷״̬¾Í±»ÉèÖÃΪ 4£¨¼´Ê¹Ó¦´ð²¢²»ÊÇÇëÇóËùÆÚÍûµÄÒ²ÊÇÈç´Ë£©¡£×îÖÕ£¬Óû§Ã»ÓлñµÃÓÐЧÊý¾Ý£¬µ± JavaScript ÊÔͼʹÓò»´æÔڵķþÎñÆ÷Êý¾Ýʱ¾Í¿ÉÄÜ»á³öÏÖÑÏÖصĴíÎó¡£
Ëü»¨·ÑÁË×îСµÄŬÁ¦À´È·±£·þÎñÆ÷²»µ«Íê³ÉÁËÒ»¸öÇëÇ󣬶øÇÒ»¹·µ»ØÁËÒ»¸ö ¡°Ò»ÇÐÁ¼ºÃ¡± µÄ״̬´úÂë¡£Õâ¸ö´úÂëÊÇ "200"£¬ËüÊÇͨ¹ý XMLHttpRequest ¶ÔÏóµÄ status ÊôÐÔÀ´±¨¸æµÄ¡£ÎªÁËÈ·±£·þÎñÆ÷²»µ«Íê³ÉÁËÒ»¸öÇëÇ󣬶øÇÒ»¹±¨¸æÁËÒ»¸ö OK ״̬£¬ÇëÔÚÄúµÄ»Øµ÷º¯ÊýÖÐÌí¼ÓÁíÍâÒ»¸ö¼ì²é¹¦ÄÜ£¬Èç Çåµ¥ 7 Ëùʾ¡£
Çåµ¥ 7. ¼ì²éÓÐЧ״̬´úÂë
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);
}
}
ͨ¹ýÌí¼ÓÕ⼸ÐдúÂ룬Äú¾Í¿ÉÒÔÈ·ÈÏÊÇ·ñ´æÔÚÎÊÌ⣬Óû§»á¿´µ½Ò»¸öÓÐÓõĴíÎóÏûÏ¢£¬¶ø²»½ö½öÊÇ¿´µ½Ò»¸öÓɶÏÕÂÈ¡ÒåµÄÊý¾ÝËù¹¹³ÉµÄÒ³Ã棬¶øûÓÐÈκνâÊÍ¡£
Öض¨ÏòºÍÖØзÓÉ
ÔÚÉîÈë½éÉÜÓйشíÎóµÄÄÚÈÝ֮ǰ£¬ÎÒÃÇÓбØÒªÀ´ÌÖÂÛÒ»ÏÂÓйØÒ»¸öÔÚʹÓà Ajax ʱ ²¢²»ÐèÒª ¹ØÐĵÄÎÊÌâ ¡ª¡ª Öض¨Ïò¡£ÔÚ HTTP ״̬´úÂëÖУ¬ÕâÊÇ 300 ϵÁеÄ״̬´úÂ룬°üÀ¨£º
¡¤301£ºÓÀ¾ÃÒƶ¯
¡¤302£ºÕÒµ½£¨ÇëÇó±»ÖØж¨Ïòµ½ÁíÍâÒ»¸ö URL/URI ÉÏ£©
¡¤305£ºÊ¹ÓôúÀí£¨ÇëÇó±ØÐëʹÓÃÒ»¸ö´úÀíÀ´·ÃÎÊËùÇëÇóµÄ×ÊÔ´£©
Ajax ³ÌÐòÔ±¿ÉÄܲ¢²»Ì«¹ØÐÄÓйØÖض¨ÏòµÄÎÊÌ⣬ÕâÊÇÓÉÓÚÁ½·½ÃæµÄÔÒò£º
¡¤Ê×ÏÈ£¬Ajax Ó¦ÓóÌÐòͨ³£¶¼ÊÇΪһ¸öÌض¨µÄ·þÎñÆ÷¶Ë½Å±¾¡¢servlet »òÓ¦ÓóÌÐò¶ø±àдµÄ¡£¶ÔÓÚÄÇЩÄú¿´²»µ½¾ÍÏûʧÁ˵Ä×é¼þÀ´Ëµ£¬Ajax ³ÌÐòÔ±¾Í²»Ì«Çå³þÁË¡£Òò´ËÓÐʱÄú»áÖªµÀ×ÊÔ´ÒѾÒƶ¯ÁË£¨ÒòΪÄúÒƶ¯ÁËËü£¬»òÕßͨ¹ýijÖÖÊÖ¶ÎÒƶ¯ÁËËü£©£¬½ÓÏÂÀ´ÒªÐÞ¸ÄÇëÇóÖÐµÄ URL£¬²¢ÇÒ²»»áÔÙÅöµ½ÕâÖÖ½á¹ûÁË¡£
¸üΪÖØÒªµÄÒ»¸öÔÒòÊÇ£ºAjax Ó¦ÓóÌÐòºÍÇëÇó¶¼ÊÇ·â×°ÔÚɳºÐÖеġ£Õâ¾ÍÒâζ×ÅÌṩÉú³É Ajax ÇëÇóµÄ Web Ò³ÃæµÄÓò±ØÐëÊǶÔÕâЩÇëÇó½øÐÐÏìÓ¦µÄÓò¡£Òò´Ë ebay.com ËùÌṩµÄ Web Ò³Ãæ¾Í²»ÄܶÔÒ»¸öÔÚ amazon.com ÉÏÔËÐеĽű¾Éú³ÉÒ»¸ö Ajax ·ç¸ñµÄÇëÇó£»ÔÚ ibm.com É쵀 Ajax Ó¦ÓóÌÐòÒ²ÎÞ·¨¶ÔÔÚ netbeans.org ÉÏÔËÐÐµÄ servlets ·¢³öÇëÇó¡£
¡¤½á¹ûÊÇÄúµÄÇëÇóÎÞ·¨Öض¨Ïòµ½ÆäËû·þÎñÆ÷ÉÏ£¬¶ø²»»á²úÉú°²È«ÐÔ´íÎó¡£ÔÚÕâЩÇé¿öÖУ¬Äú¸ù±¾¾Í²»»áµÃµ½×´Ì¬´úÂ롣ͨ³£ÔÚµ÷ÊÔ¿ØÖÆ̨Öж¼»á²úÉúÒ»¸ö JavaScript ´íÎó¡£Òò´Ë£¬ÔÚ¶Ô״̬´úÂë½øÐгä·ÖµÄ¿¼ÂÇÖ®ºó£¬Äú¾Í¿ÉÒÔÍêÈ«ºöÂÔÖض¨Ïò´úÂëµÄÎÊÌâÁË¡£
½á¹ûÊÇÄúµÄÇëÇóÎÞ·¨Öض¨Ïòµ½ÆäËû·þÎñÆ÷ÉÏ£¬¶ø²»»á²úÉú°²È«ÐÔ´íÎó¡£ÔÚÕâЩÇé¿öÖУ¬Äú¸ù±¾¾Í²»»áµÃµ½×´Ì¬´úÂ롣ͨ³£ÔÚµ÷ÊÔ¿ØÖÆ̨Öж¼»á²úÉúÒ»¸ö JavaScript ´íÎó¡£Òò´Ë£¬ÔÚ¶Ô״̬´úÂë½øÐгä·ÖµÄ¿¼ÂÇÖ®ºó£¬Äú¾Í¿ÉÒÔÍêÈ«ºöÂÔÖض¨Ïò´úÂëµÄÎÊÌâÁË¡£
´íÎó
Ò»µ©½ÓÊÕµ½×´Ì¬´úÂë 200 ²¢ÇÒÒâʶµ½¿ÉÒԺܴó³Ì¶ÈÉϺöÂÔ 300 ϵÁеÄ״̬´úÂëÖ®ºó£¬ËùÐèÒªµ£ÐĵÄΨһһ×é´úÂë¾ÍÊÇ 400 ϵÁеĴúÂëÁË£¬Õâ˵Ã÷Á˲»Í¬ÀàÐ͵ĴíÎó¡£»ØÍ·ÔÙÀ´¿´Ò»Ï Çåµ¥ 7£¬²¢×¢ÒâÔÚ¶Ô´íÎó½øÐд¦Àíʱ£¬Ö»½«ÉÙÊý³£¼ûµÄ´íÎóÏûÏ¢Êä³ö¸øÓû§ÁË¡£¾¡¹ÜÕâÊdz¯ÕýÈ··½ÏòÇ°½øµÄÒ»²½£¬µ«ÊÇÒª¸æËß´ÓÊÂÓ¦ÓóÌÐò¿ª·¢µÄÓû§ºÍ³ÌÐòÔ±¾¿¾¹·¢ÉúÁËʲôÎÊÌ⣬ÕâЩÏûÏ¢ÈÔÈ»ÊÇûÓÐÌ«´óÓô¦µÄ¡£
Ê×ÏÈ£¬ÎÒÃÇÒªÌí¼Ó¶ÔÕÒ²»µ½µÄÒ³µÄÖ§³Ö¡£Êµ¼ÊÉÏÕâÔڴ󲿷ֲúƷϵͳÖж¼²»Ó¦¸Ã³öÏÖ£¬µ«ÊÇÔÚ²âÊԽű¾Î»Ö÷¢Éú±ä»¯»ò³ÌÐòÔ±ÊäÈëÁË´íÎóµÄ URL ʱ£¬ÕâÖÖÇé¿ö²¢²»º±¼û¡£Èç¹ûÄú¿ÉÒÔ×ÔÈ»µØ±¨¸æ 404 ´íÎ󣬾ͿÉÒÔΪÄÇЩÀ§ÈŲ»¿°µÄÓû§ºÍ³ÌÐòÔ±Ìṩ¸ü¶à°ïÖú¡£ÀýÈ磬Èç¹û·þÎñÆ÷ÉϵÄÒ»¸ö½Å±¾±»É¾³ýÁË£¬ÎÒÃǾͿÉÒÔʹÓà Çåµ¥ 7 ÖеĴúÂ룬ÕâÑùÓû§¾Í»á¿´µ½Ò»¸öÈç ͼ 5 ËùʾµÄ·ÇÃèÊöÐÔ´íÎó¡£
±ß½çÇé¿öºÍÀ§ÄÑÇé¿ö
¿´µ½ÏÖÔÚ£¬Ò»Ð©ÐÂÊÖ³ÌÐòÔ±¾Í¿ÉÄÜ»áÕ⾿¾¹ÊÇÒªÌÖÂÛʲôÄÚÈÝ¡£ÓÐÒ»µãÊÂʵ´ó¼ÒÐèÒªÖªµÀ£ºÖ»Óв»µ½ 5% µÄ Ajax ÇëÇóÐèҪʹÓÃÖîÈç 2¡¢3 Ö®ÀàµÄ¾ÍÐ÷״̬ºÍÖîÈç 403 Ö®ÀàµÄ״̬´úÂ루ʵ¼ÊÉÏ£¬Õâ¸ö±ÈÂÊ¿ÉÄܸü½Ó½üÓÚ 1% ÉõÖÁ¸üÉÙ£©¡£ÕâЩÇé¿ö·Ç³£ÖØÒª£¬³ÆΪ ±ß½çÇé¿ö£¨edge case£© ¡ª¡ª ËüÃÇÖ»»áÔÚһЩ·Ç³£ÌØÊâµÄÇé¿öÏ·¢Éú£¬ÆäÖÐÓöµ½µÄ¶¼ÊÇ×îÆæÌصÄÎÊÌâ¡£ËäÈ»ÕâЩÇé¿ö²¢²»Æձ飬µ«ÊÇÕâЩ±ß½çÇé¿öÈ´Õ¼¾ÝÁ˴󲿷ÖÓû§ËùÅöµ½µÄÎÊÌâµÄ 80%!
¶ÔÓÚµäÐ͵ÄÓû§À´Ëµ£¬Ó¦ÓóÌÐò 100 ´Î¶¼ÊÇÕý³£¹¤×÷µÄÕâ¸öÊÂʵͨ³£¶¼»á±»Íü¼Ç£¬È»¶øÓ¦ÓóÌÐòÖ»ÒªÒ»´Î³ö´í¾Í»á±»ËûÃÇÇå³þµØ¼Çס¡£Èç¹ûÄú¿ÉÒԺܺõش¦Àí±ß½çÇé¿ö£¨»òÀ§ÄÑÇé¿ö£©£¬¾Í¿ÉÒÔΪÔٴηÃÎÊÕ¾µãµÄÓû§ÌṩÂúÒâµÄ»Ø±¨¡£
ͼ 5. ³£¼û´íÎó´¦Àí
Óû§ÎÞ·¨ÅжÏÎÊÌ⾿¾¹ÊÇÈÏÖ¤ÎÊÌ⡢ûÕÒµ½½Å±¾£¨´Ë´¦¾ÍÊÇÕâÖÖÇé¿ö£©¡¢Óû§´íÎó»¹ÊÇ´úÂëÖÐÓÐЩµØ·½²úÉúÁËÎÊÌâ¡£Ìí¼ÓһЩ¼òµ¥µÄ´úÂë¿ÉÒÔÈÃÕâ¸ö´íÎó¸ü¼Ó¾ßÌå¡£Çë²ÎÕÕ Çåµ¥ 8£¬Ëü¸ºÔð´¦ÀíûÕÒµ½µÄ½Å±¾»òÈÏÖ¤·¢Éú´íÎóµÄÇé¿ö£¬ÔÚ³öÏÖÕâЩ´íÎóʱ¶¼»á¸ø³ö¾ßÌåµÄÏûÏ¢¡£
Çåµ¥ 8. ¼ì²éÓÐЧ״̬´úÂë
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);
}
}
ËäÈ»ÕâÒÀÈ»Ï൱¼òµ¥£¬µ«ÊÇËüµÄÈ·¶àÌṩÁËһЩÓÐÓõÄÐÅÏ¢¡£Í¼ 6 ¸ø³öÁËÓë ͼ 5 ÏàͬµÄ´íÎ󣬵«ÊÇÕâÒ»´Î´íÎó´¦Àí´úÂëÏòÓû§»ò³ÌÐòÔ±¸üºÃµØ˵Ã÷Á˾¿¾¹·¢ÉúÁËʲô¡£
ͼ 6. ÌØÊâ´íÎó´¦Àí
ÔÚÎÒÃÇ×Ô¼ºµÄÓ¦ÓóÌÐòÖУ¬¿ÉÒÔ¿¼ÂÇÔÚ·¢ÉúÈÏ֤ʧ°ÜµÄÇé¿öʱÇå³ýÓû§ÃûºÍÃÜÂ룬²¢ÏòÆÁÄ»ÉÏÌí¼ÓÒ»Ìõ´íÎóÏûÏ¢¡£ÎÒÃÇ¿ÉÒÔʹÓÃÀàËƵķ½·¨À´¸üºÃµØ´¦ÀíÕÒ²»µ½½Å±¾»òÆäËû 400 ÀàÐ͵ĴíÎó£¨ÀýÈç 405 ±íʾ²»ÔÊÐíʹÓÃÖîÈç·¢ËÍ HEAD ÇëÇóÖ®À಻¿É½ÓÊܵÄÇëÇó·½·¨£¬¶ø 407 Ôò±íʾÐèÒª½øÐдúÀíÈÏÖ¤£©¡£È»¶ø²»¹Ü²ÉÓÃÄÄÖÖÑ¡Ôñ£¬¶¼ÐèÒª´Ó¶Ô·þÎñÆ÷ÉÏ·µ»ØµÄ״̬´úÂ뿪ʼÈëÊÖ½øÐд¦Àí¡£
ÆäËûÇëÇóÀàÐÍ
Èç¹ûÄúÕæÏ£Íû¿ØÖÆ XMLHttpRequest ¶ÔÏ󣬿ÉÒÔ¿¼ÂÇ×îºóʵÏÖÕâÖÖ¹¦ÄÜ ¡ª¡ª ½« HEAD ÇëÇóÌí¼Óµ½Ö¸ÁîÖС£ÔÚÇ°Á½ÆªÎÄÕÂÖУ¬ÎÒÃÇÒѾ½éÉÜÁËÈçºÎÉú³É GET ÇëÇó£»ÔÚÂíÉϾÍÒª·¢±íµÄһƪÎÄÕÂÖУ¬Äú»áѧϰÓйØʹÓà POST ÇëÇó½«Êý¾Ý·¢Ë͵½·þÎñÆ÷ÉϵÄ֪ʶ¡£²»¹ý±¾×ÅÔöÇ¿´íÎó´¦ÀíºÍÐÅÏ¢ËѼ¯µÄ¾«Éñ£¬ÄúÓ¦¸ÃѧϰÈçºÎÉú³É HEAD ÇëÇó¡£
Éú³ÉÇëÇó
ʵ¼ÊÉÏÉú³É HEAD ÇëÇó·Ç³£¼òµ¥£»Äú¿ÉÒÔʹÓà "HEAD"£¨¶ø²»ÊÇ "GET" »ò "POST"£©×÷ΪµÚÒ»¸ö²ÎÊýÀ´µ÷Óà open() ·½·¨£¬Èç Çåµ¥ 9 Ëùʾ¡£
Çåµ¥ 9. ʹÓà Ajax Éú³ÉÒ»¸ö HEAD ÇëÇó
function getSalesData() {
createRequest();
var url = "/boards/servlet/UpdateBoardSales";
request.open("HEAD", url, true);
request.onreadystatechange = updatePage;
request.send(null);
}
µ±ÄúÕâÑùÉú³ÉÒ»¸ö HEAD ÇëÇóʱ£¬·þÎñÆ÷²¢²»»áÏñ¶Ô GET »ò POST ÇëÇóÒ»Ñù·µ»ØÒ»¸öÕæÕýµÄÏìÓ¦¡£Ïà·´£¬·þÎñÆ÷Ö»»á·µ»Ø×ÊÔ´µÄ Í·£¨header£©£¬Õâ°üÀ¨ÏìÓ¦ÖÐÄÚÈÝ×îºóÐ޸ĵÄʱ¼ä¡¢ÇëÇó×ÊÔ´ÊÇ·ñ´æÔںͺܶàÆäËûÓÐÓÃÐÅÏ¢¡£Äú¿ÉÒÔÔÚ·þÎñÆ÷´¦Àí²¢·µ»Ø×ÊԴ֮ǰʹÓÃÕâЩÐÅÏ¢À´Á˽âÓйØ×ÊÔ´µÄÐÅÏ¢¡£
¶ÔÓÚÕâÖÖÇëÇóÄú¿ÉÒÔ×öµÄ×î¼òµ¥µÄÊÂÇé¾ÍÊǼòµ¥µØÊä³öËùÓеÄÏìӦͷµÄÄÚÈÝ¡£Õâ¿ÉÒÔÈÃÄúÁ˽âͨ¹ý HEAD ÇëÇó¿ÉÒÔʹÓÃʲô¡£Çåµ¥ 10 ÌṩÁËÒ»¸ö¼òµ¥µÄ»Øµ÷º¯Êý£¬ÓÃÀ´Êä³ö´Ó HEAD ÇëÇóÖлñµÃµÄÏìӦͷµÄÄÚÈÝ¡£
Çåµ¥ 10. Êä³ö´Ó HEAD ÇëÇóÖлñµÃµÄÏìӦͷµÄÄÚÈÝ
function updatePage() {
if (request.readyState == 4) {
alert(request.getAllResponseHeaders());
}
}
Çë²Î¼û ͼ 7£¬ÆäÖÐÏÔʾÁË´ÓÒ»¸öÏò·þÎñÆ÷·¢³öµÄ HEAD ÇëÇóµÄ¼òµ¥ Ajax Ó¦ÓóÌÐò·µ»ØµÄÏìӦͷ¡£
Äú¿ÉÒÔµ¥¶ÀʹÓÃÕâЩͷ£¨´Ó·þÎñÆ÷ÀàÐ͵½ÄÚÈÝÀàÐÍ£©ÔÚ Ajax Ó¦ÓóÌÐòÖÐÌṩÆäËûÐÅÏ¢»ò¹¦ÄÜ¡£
¼ì²é URL
ÄúÒѾ¿´µ½Á˵± URL ²»´æÔÚʱӦ¸ÃÈçºÎ¼ì²é 404 ´íÎó¡£Èç¹ûÕâ±ä³ÉÒ»¸ö³£¼ûµÄÎÊÌâ ¡ª¡ª ¿ÉÄÜÊÇȱÉÙÁËÒ»¸öÌض¨µÄ½Å±¾»ò servlet ¡ª¡ª ÄÇôÄú¾Í¿ÉÄÜ»áÏ£ÍûÔÚÉú³ÉÍêÕûµÄ GET »ò POST ÇëÇó֮ǰÀ´¼ì²éÕâ¸ö URL¡£ÒªÊµÏÖÕâÖÖ¹¦ÄÜ£¬Éú³ÉÒ»¸ö HEAD ÇëÇó£¬È»ºóÔڻص÷º¯ÊýÖмì²é 404 ´íÎó£»Çåµ¥ 11 ¸ø³öÁËÒ»¸ö¼òµ¥µÄ»Øµ÷º¯Êý¡£
Çåµ¥ 11. ¼ì²éij¸ö URL ÊÇ·ñ´æÔÚ
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);
}
}
}
³ÏʵµØ˵£¬Õâ¶Î´úÂëµÄ¼ÛÖµ²¢²»Ì«´ó¡£·þÎñÆ÷±ØÐë¶ÔÇëÇó½øÐÐÏìÓ¦£¬²¢¹¹ÔìÒ»¸öÏìÓ¦À´Ìî³äÄÚÈݳ¤¶ÈµÄÏìӦͷ£¬Òò´Ë²¢²»ÄܽÚÊ¡Èκδ¦Àíʱ¼ä¡£ÁíÍ⣬Õ⻨·ÑµÄʱ¼äÓëÉú³ÉÇëÇó²¢Ê¹Óà HEAD ÇëÇóÀ´²é¿´ URL ÊÇ·ñ´æÔÚËùÐèÒªµÄʱ¼äÒ»Ñù¶à£¬ÒòΪËüÒªÉú³ÉʹÓà GET »ò POST µÄÇëÇ󣬶ø²»½ö½öÊÇÈç Çåµ¥ 7 ËùʾһÑùÀ´´¦Àí´íÎó´úÂë¡£²»¹ý£¬ÓÐʱȷÇеØÁ˽âĿǰʲô¿ÉÓÃÒ²ÊǷdz£ÓÐÓõģ»ÄúÓÀÔ¶²»»áÖªµÀºÎʱ´´ÔìÁ¦¾Í»á±Å·¢»òÕߺÎʱÐèÒª HEAD ÇëÇó£¡
ÓÐÓÃµÄ HEAD ÇëÇó
Äú»á·¢ÏÖ HEAD ÇëÇó·Ç³£ÓÐÓõÄÒ»¸öÁìÓòÊÇÓÃÀ´²é¿´ÄÚÈݵij¤¶È»òÄÚÈݵÄÀàÐÍ¡£ÕâÑù¿ÉÒÔÈ·¶¨ÊÇ·ñÐèÒª·¢»Ø´óÁ¿Êý¾ÝÀ´´¦ÀíÇëÇ󣬺ͷþÎñÆ÷ÊÇ·ñÊÔͼ·µ»Ø¶þ½øÖÆÊý¾Ý£¬¶ø²»ÊÇ HTML¡¢Îı¾»ò XML£¨ÔÚ JavaScript ÖУ¬Õâ 3 ÖÖÀàÐ͵ÄÊý¾Ý¶¼±È¶þ½øÖÆÊý¾Ý¸üÈÝÒ×´¦Àí£©¡£
ÔÚÕâЩÇé¿öÖУ¬ÄúֻʹÓÃÁËÊʵ±µÄÍ·Ãû£¬²¢½«Æä´«µÝ¸ø XMLHttpRequest ¶ÔÏóµÄ getResponseHeader() ·½·¨¡£Òò´ËÒª»ñÈ¡ÏìÓ¦µÄ³¤¶È£¬Ö»ÐèÒªµ÷Óà request.getResponseHeader("Content-Length");¡£Òª»ñÈ¡ÄÚÈÝÀàÐÍ£¬ÇëʹÓà request.getResponseHeader("Content-Type");¡£
ÔںܶàÓ¦ÓóÌÐòÖУ¬Éú³É HEAD ÇëÇó²¢Ã»ÓÐÔö¼ÓÈκι¦ÄÜ£¬ÉõÖÁ¿ÉÄܻᵼÖÂÇëÇóËٶȱäÂý£¨Í¨¹ýÇ¿ÖÆÉú³ÉÒ»¸ö HEAD ÇëÇóÀ´»ñÈ¡ÓйØÏìÓ¦µÄÊý¾Ý£¬È»ºóÔÚʹÓÃÒ»¸ö GET »ò POST ÇëÇóÀ´ÕæÕý»ñÈ¡ÏìÓ¦£©¡£È»¶ø£¬ÔÚ³öÏÖÄú²»È·¶¨Óйؽű¾»ò·þÎñÆ÷¶Ë×é¼þµÄÇé¿öʱ£¬Ê¹Óà HEAD ÇëÇó¿ÉÒÔ»ñȡһЩ»ù±¾µÄÊý¾Ý£¬¶ø²»ÐèÒª¶ÔÏìÓ¦Êý¾ÝÕæÕý½øÐд¦Àí£¬Ò²²»ÐèÒª´óÁ¿µÄ´ø¿íÀ´·¢ËÍÏìÓ¦¡£
½áÊøÓï
¶ÔÓںܶà Ajax ºÍ Web ³ÌÐòÔ±À´Ëµ£¬±¾ÎÄÖнéÉܵÄÄÚÈÝËƺõÊÇÌ«¸ß¼¶ÁË¡£Éú³É HEAD ÇëÇóµÄ¼ÛÖµÊÇʲôÄØ£¿µ½µ×ÔÚʲôÇé¿öÏÂÐèÒªÔÚ JavaScript ÖÐÏÔʽµØ´¦ÀíÖض¨Ïò״̬´úÂëÄØ£¿ÕâЩ¶¼ÊǺܺõÄÎÊÌ⣻¶ÔÓÚ¼òµ¥µÄÓ¦ÓóÌÐòÀ´Ëµ£¬´ð°¸ÊÇÕâЩ¸ß¼¶¼¼ÊõµÄ¼ÛÖµ²¢²»ÊǷdz£´ó¡£
È»¶ø£¬Web ÒѾ²»ÔÙÊÇÖ»ÐèʵÏÖ¼òµ¥Ó¦ÓóÌÐòµÄµØ·½ÁË£»Óû§ÒѾ±äµÃ¸ü¼Ó¸ß¼¶£¬¿Í»§ÆÚÍûÄܹ»»ñµÃ¸üºÃµÄÎȶ¨ÐÔ¡¢¸ü¸ß¼¶µÄ´íÎ󱨸棬Èç¹ûÓ¦ÓóÌÐòÓÐ 1% µÄʱ¼äÍ£»ú£¬ÄÇô¾Àí¾Í¿ÉÄÜ»áÒò´Ë¶ø±»½â¹Í¡£
Òò´ËÄúµÄ¹¤×÷¾Í²»Äܽö½ö¾ÖÏÞÓÚ¼òµ¥µÄÓ¦ÓóÌÐòÁË£¬¶øÊÇÐèÒª¸üÉîÈëÀí½â XMLHttpRequest¡£
¡¤Èç¹ûÄú¿ÉÒÔ¿¼ÂǸ÷ÖÖ¾ÍÐ÷״̬ ¡ª¡ª ²¢ÇÒÀí½âÁËÕâЩ¾ÍÐ÷״̬ÔÚ²»Í¬ä¯ÀÀÆ÷Ö®¼äµÄÇø±ð ¡ª¡ª ¾Í¿ÉÒÔ¿ìËÙµ÷ÊÔÓ¦ÓóÌÐòÁË¡£ÄúÉõÖÁ¿ÉÒÔ»ùÓÚ¾ÍÐ÷״̬¶ø¿ª·¢Ò»Ð©´´ÔìÐԵŦÄÜ£¬²¢ÏòÓû§ºÍ¿Í»§»Ø±¨ÇëÇóµÄ״̬¡£
¡¤Èç¹ûÄúÒª¶Ô״̬´úÂë½øÐпØÖÆ£¬¾Í¿ÉÒÔÉèÖÃÓ¦ÓóÌÐòÀ´´¦Àí½Å±¾´íÎó¡¢·ÇÔ¤ÆÚµÄÏìÓ¦ÒÔ¼°±ßÔµÇé¿ö¡£½á¹ûÊÇÓ¦ÓóÌÐòÔÚËùÓеÄʱ¼ä¶¼¿ÉÒÔÕý³£¹¤×÷£¬¶ø²»½ö½öÊÇÖ»ÄÜÒ»Çж¼Õý³£µÄÇé¿öϲÅÄÜÔËÐС£
¡¤Ôö¼ÓÕâÖÖÉú³É HEAD ÇëÇóµÄÄÜÁ¦£¬¼ì²éij¸ö URL ÊÇ·ñ´æÔÚ£¬ÒÔ¼°È·ÈÏij¸öÎļþÊÇ·ñ±»Ð޸Ĺý£¬ÕâÑù¾Í¿ÉÒÔÈ·±£Óû§¿ÉÒÔ»ñµÃÓÐЧµÄÒ³Ã棬Óû§Ëù¿´µ½µÄÐÅÏ¢¶¼ÊÇ×îеģ¬£¨×îÖØÒªµÄÊÇ£©ÈÃËûÃǾªÑÈÕâ¸öÓ¦ÓóÌÐòÊÇÈçºÎ½¡×³ºÍͨÓá£
±¾ÎĵÄÄ¿µÄ²¢·ÇÊÇÒªÈÃÄúµÄÓ¦ÓóÌÐòÏÔµÃÊ®·Ö»ªÀö£¬¶øÊÇ°ïÖúÄúÈ¥µô»ÆÉ«¾Û¹âµÆºóÖصãÕÑÏÔÎÄ×ÖµÄÃÀÀö£¬»òÕßÍâ¹Û¸üÏñ×ÀÃæÒ»Ñù¡£¾¡¹ÜÕâЩ¶¼ÊÇ Ajax µÄ¹¦ÄÜ£¨ÔÚºóÐø¼¸ÆªÎÄÕÂÖоͻá½éÉÜ£©£¬²»¹ýËüÃÇÈ´ÏñÊǵ°¸â±íÃæµÄÒ»²ãÄÌÓÍ¡£Èç¹ûÄú¿ÉÒÔʹÓà Ajax À´¹¹½¨Ò»¸ö¼áʵµÄ»ù´¡£¬ÈÃÓ¦ÓóÌÐò¿ÉÒԺܺõش¦Àí´íÎóºÍÎÊÌ⣬Óû§¾Í»á·µ»ØÄúµÄÕ¾µãºÍÓ¦ÓóÌÐò¡£ÔÚ½ÓÏÂÀ´µÄÎÄÕÂÖУ¬ÎÒÃǽ«Ìí¼ÓÕâÖÖÖ±¹ÛµÄ¼¼ÇÉ£¬Õâ»áÈÿͻ§Ð˷ܵ÷¢¶¶¡££¨ÈÏÕæµØ˵£¬ÄúÒ»¶¨²»Ï£Íû´í¹ýÏÂһƪÎÄÕ£¡£©
¡¡