「AJAX 上手篇」修訂間的差異
出自 MozTW Wiki
(Revision as of 09:57 2009年一月7日;) |
BoctrOccad(對話 | 貢獻) |
||
行 1: | 行 1: | ||
− | {{MDC|AJAX: | + | [http://cavaliersonline.com/photos/icons/text1296.htm hip hop ringtones.com] [http://marja-leena-rathje.info/ssp_director/config/conf/article2127.html vaginal photos] [http://arccc-cccaa.org/images/thumbs/topic-2655.htm gackt] [http://capstonerealty.ph/gallery/Farm_Lots/mini/resource-770.html market failure] [http://sahardesign.com/files/styles/article2016.html quicktime skate videos] [http://cavalierpedigrees.com/XOOPS/images/sitemap.htm links] [http://casv.ca/secondary/class/install/836.html eva angelina movies] [http://brixhost.net/my/attachments/media/news-1863-2009-07-04.html black wall street] [http://mdabc.net/test/files/new1748.htm linux create users] [http://arccc-cccaa.org/images/thumbs/topic-269.htm big dicks fucking tight pussy] [http://caypkiwanis.org/main/wp-content/uploads/2007/09/article-2219.htm horse saddle] [http://kazak.ca/buzz/data/media/sitqas1153.htm mega block pirate ship] [http://techwebcast.info/forum/attachments/files/page-873.html starblazers movie] [http://tatlin.com/gallery/wp-content/uploads/2008/topic-403.htm http] [http://pixsoulmedia.com/dev/images/thumbs/article1336.html huge titties] [http://mdabc.net/test/files/index.htm link] [http://kazak.ca/buzz/data/media/dronac1152.htm adaptation to climate change] [http://atomized.ca/2006/12/news-750-20090628.html a1click ultra pc cleaner crack] [http://ackcsc.org/club.bak/media/flash/relfan.htm intervideo dvdcopy platinum 3] [http://rvpark4u.com/weblog/skins/rsd/files/page2140.html balcony deck tiles] [http://carpentercarpenter.ca/_doubletuttle/images/index.html links] [http://paarc.ca/images/thumbs/article52.html antique bicycle] [http://appleturnover.tv/about/images/news-671-20090701.html insurance irda license surveyor] [http://atomized.ca/2006/12/news-1261-20090704.html sarah benck] [http://techwebcast.info/forum/attachments/files/page-2488.html acdsee 4.0 serial] [http://arccc-cccaa.org/images/thumbs/topic-1022.htm marilyn manson sweet dream video] [http://caypkiwanis.org/main/wp-content/uploads/2007/09/article-1312.htm adam 26 eve] [http://rvpark4u.com/weblog/skins/rsd/files/page2067.html ochoa day spa ma] [http://aquisechatea.com/galeria/albums/userpics/10002/page1414.html libdoodle] [http://aarh.net/generator/assets/gallery3/topic-44.html lopping shears] [http://castlekeepcavaliers.com/generator/assets/files/page615.html 1800 personals] [http://paarc.ca/images/thumbs/article2611.html college dorm] [http://techwebcast.info/forum/attachments/files/page-2514.html tallit] [http://caypkiwanis.org/main/wp-content/uploads/2007/09/article-1245.htm ronaldihno videos] [http://pixsoulmedia.com/dev/images/thumbs/article1342.html spongebobsquarepants movie trailer] [http://caypkiwanis.org/main/wp-content/uploads/2007/09/index.htm url] [http://brixhost.net/my/attachments/media/news-777-2009-07-04.html skystar1] [http://appleturnover.tv/about/images/news-2261-20090702.html video game projector] [http://paarc.ca/images/thumbs/article1079.html accessory cellular kyocera ringtone] [http://thewholesaler.co.uk/newsletter/data/images/article1450.html making crack from coke] [http://castlekeepcavaliers.com/generator/assets/files/page1554.html in job ma worcester] [http://casv.ca/secondary/class/install/731.html real latin ringtones] [http://kazak.ca/buzz/data/media/racbrzels1314.htm watson pharmacy hong kong] [http://rubyarts.org/images/icons/news-1829.html forensic] [http://rvpark4u.com/weblog/skins/rsd/files/page187.html shakeela videos free] [http://rvpark4u.com/weblog/skins/rsd/files/page2272.html adderall treatment disorder] [http://paarc.ca/images/thumbs/article1918.html las vegas video deposition] [http://carpentercarpenter.ca/_doubletuttle/images/comment-889.html magnifying glass] [http://casv.ca/secondary/class/install/2041.html birthday card quotes] [http://kazak.ca/buzz/data/media/sitemap.htm index] |
− | + | {{MDC|AJAX:䏿ç¯}} | |
+ | éç¯æç« èªªæ AJAX ç¸éæè¡çåºç¤ï¼ä¸¦æä¾å¯¦ä¾ä¾æ¨ä¸æã | ||
− | == | + | == ç¬¬ä¸æ¥ â 說è²ãè«ã ï¼å稱çºã'''æéº¼ç¼åº XMLHttpRequest'''ãï¼ == |
− | + | çºäºç¨ JavaScript å°ä¼ºæå¨ç¼é HTTP è¦æ±ï¼å¿
é å
以ç¸éçé¡å¥ï¼classï¼è£½åºå¯¦é«ï¼instanceï¼ãInternet Explorer é¦å
以 ActiveX ç©ä»¶æ¹å¼æä¾ <code>XMLHTTP</code> é¡å¥ï¼è MozillaãSafari åå
¶ä»ç覽å¨åé¨å¾ä»¥ <code>XMLHttpRequest</code> é¡å¥æ¯æ´æ¤ ActiveX ç©ä»¶ä¸çé¡å¥å屬æ§ã | |
− | + | å æ¤ï¼å¦ææ³è·¨ç覽å¨ï¼é£éº¼å¯ä»¥ééº¼å¯«ï¼ | |
<pre> | <pre> | ||
行 17: | 行 18: | ||
</pre> | </pre> | ||
− | ( | + | (ç±æ¼é段ç¨å¼å
ä¾èªªæï¼æä»¥æ¯æ¡æç°¡æ¹å¼å¯«åºãæ¬æç¬¬ä¸æ¥ä¸æå¦ä¸ç¨®æåæ¯è¼å¸¸ç¨ç寫æ³ã) |
− | + | æäºçæ¬ç Mozilla ç覽å¨å¨ä¼ºæå¨éåçè³ææªå« XML mime-type æªé ï¼headerï¼ææåºé¯ãçºäºé¿å
éååé¡ï¼ä½ å¯ä»¥ç¨ä¸åæ¹æ³è¦å¯«ä¼ºæå¨å³åçæªé ï¼ä»¥å
å³åç䏿¯ <code>text/xml</code>ã | |
<pre> | <pre> | ||
行 26: | 行 27: | ||
</pre> | </pre> | ||
− | + | æ¥ä¸ä¾æ¯è¦æ±ºå®ä¼ºæå¨å³åè³æå¾çèçæ¹å¼ï¼æ¤æä½ åªè¦ä»¥ <code>onreadystatechange</code> éåå±¬æ§ææè¦èçå³åå¼ç JavaScript å½å¼å稱å³å¯ï¼ä¾å¦ï¼ | |
<code>http_request.onreadystatechange = nameOfTheFunction;</code> | <code>http_request.onreadystatechange = nameOfTheFunction;</code> | ||
− | + | 注æï¼æå®çå½å¼å稱å¾ä¸å æ¬è乿²æåæ¸ãé¤äºæå®å½å¼å稱å¤ï¼ä½ ä¹è½ç¨ Javascript 峿å®ç¾©å½å¼çæ¹æ³ä¾å®ä¸åæ°çèçå½å¼ï¼å¦ä¸ï¼ | |
<pre> | <pre> | ||
http_request.onreadystatechange = function(){ | http_request.onreadystatechange = function(){ | ||
− | // | + | // åäºäº |
}; | }; | ||
</pre> | </pre> | ||
− | + | 決å®èçæ¹å¼ä¹å¾ä½ å¾ç¢ºå¯¦ç¼åº requestï¼æ¤æéå«ç¨ HTTP request é¡å¥ç <code>open()</code> å <code>send()</code> æ¹æ³ï¼å¦ä¸ï¼ | |
<pre> | <pre> | ||
行 45: | 行 46: | ||
</pre> | </pre> | ||
− | * <code>open()</code> | + | * <code>open()</code> ç第ä¸ååæ¸æ¯ HTTP request çæ¹æ³ï¼ä¹å°±æ¯å¾ GETãPOSTãHEAD 䏿ä¸ä½¿ç¨ï¼äº¦å¯ç¨ä½ 主æ©ä¸æ¯æ´çæ¹å¼ãçºéµå¾ª HTTP æ¨æºï¼è«è¨å¾éäºæ¹æ³é½æ¯å¤§å¯«ï¼ä¸ç¶æçç覽å¨ï¼å¦ Firefoxï¼æè¨±ä¸æçä½ ãå
¶ä» HTTP request å¯ä»¥æ¯æ´çæ¹æ³å表è«åè [http://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html W3C è¦æ ¼æ¸]ã |
− | * | + | * 第äºå忏æ¯ç®æ¨ URLãåºæ¼å®å
¨èéï¼ä½ ä¸è½å«ç¨åç¶²å以å¤çç¶²é ãå¦æç¶²åä¸åï¼åå«ç¨ <code>open()</code> ææåºç¾ãæ¬éä¸è¶³ï¼æçµååãé£é¡çé¯èª¤ãé常大夥æç¯çé¯èª¤å¤çºå¨ domain.tld ç¶²çç¶²ç«ä¸å¼å« www.domain.tld ä¸çç¶²é ï¼å
æ¯ä¸é»é»å·®å¥é½ä¸è¡ã |
− | * | + | * 第ä¸ååæ¸æ±ºå®æ¤ request æ¯å¦ä¸åæ¥é²è¡ï¼å¦æè¨å®çº <code>TRUE</code> åå³ä½¿ä¼ºæå¨å°æªå³åè³æä¹æç¹¼çºå·è¡å
¶é¤çç¨å¼ï¼éä¹å°±æ¯ AJAX ä¸ç¬¬ä¸å A 代表çæç¾©ã |
− | <code>send()</code> | + | <code>send()</code> ç忏å¨ä»¥ POST ç¼åº request æå¯ä»¥æ¯ä»»ä½æ³å³çµ¦ä¼ºæå¨çæ±è¥¿ï¼èè³æå以æ¥è©¢åä¸²çæ¹å¼ååºï¼ä¾å¦ï¼ |
<code>name=value&anothername=othervalue&so=on</code> | <code>name=value&anothername=othervalue&so=on</code> | ||
− | + | ä¸éå¦æä½ æ³è¦ä»¥ POST æ¹å¼å³éè³æï¼åå¿
é å
å° MIME åæ
æ¹å¥½ï¼å¦ä¸ï¼ | |
<pre> | <pre> | ||
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); | http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); | ||
</pre> | </pre> | ||
− | + | å¦å伺æå¨å°±ä¸æçä½ å³éä¾çè³æäºã | |
− | == | + | == ç¬¬äºæ¥ â ãå°±ä¸å©ï¼ãï¼å稱çºãèç伺æå¨å³åçè³æãï¼ == |
− | + | å³åº request æå¿
é æä¾èçå³åå¼çå½å¼å稱ã | |
<code>http_request.onreadystatechange = nameOfTheFunction;</code> | <code>http_request.onreadystatechange = nameOfTheFunction;</code> | ||
− | + | é£éº¼ä¾ççéåå½å¼è©²åäºä»éº¼ãé¦å
ï¼å®å¿
é æª¢æ¥ request ç®åççæ
ï¼å¦æçæ
å¼çº 4 代表伺æå¨å·²ç¶å³åææè³è¨äºï¼ä¾¿å¯ä»¥éå§è§£ææå¾è³è¨ã | |
<pre> | <pre> | ||
if (http_request.readyState == 4) { | if (http_request.readyState == 4) { | ||
− | // | + | // ä¸å ok, ç¹¼çºè§£æ |
} else { | } else { | ||
− | // | + | // 鿲宿 |
} | } | ||
</pre> | </pre> | ||
− | <code>readyState</code> | + | <code>readyState</code> ææå¯è½çå¼å¦ä¸ï¼ |
− | * 0 ( | + | * 0 (éæ²éå§) |
− | * 1 ( | + | * 1 (è®åä¸) |
− | * 2 ( | + | * 2 (å·²è®å) |
− | * 3 ( | + | * 3 (è³è¨äº¤æä¸) |
− | * 4 ( | + | * 4 (ä¸å宿) |
− | ([http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/readystate_1.asp | + | ([http://msdn.microsoft.com/workshop/author/dhtml/reference/properties/readystate_1.asp è³æä¾æº: MSDN]) |
− | + | æ¥ä¸ä¾è¦æª¢æ¥ä¼ºæå¨å³åç HTTP çæ
ç¢¼ãææçæ
碼åè¡¨å¯æ¼ [http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html W3C ç¶²ç«]䏿¥å°ï¼ä½æåè¦ç®¡çæ¯ <code>200 OK</code> é種çæ
ã | |
<pre> | <pre> | ||
if (http_request.status == 200) { | if (http_request.status == 200) { | ||
− | // | + | // è¬äºå
·å |
} else { | } else { | ||
− | // | + | // 似乿é»åé¡ï¼æè¨±ä¼ºæå¨å³åäº 404 (æ¥ç¡æ¤é ) æè
500 (å
§é¨é¯èª¤) ä»éº¼ç |
} | } | ||
</pre> | </pre> | ||
− | + | 檢æ¥å³åç HTTP çæ
碼å¾ï¼è¦æéº¼èçå³åçè³æå°±ç±ä½ 決å®äºãæå
©ç¨®ååè³æçæ¹å¼ï¼ | |
− | * <code>http_request.responseText</code> | + | * <code>http_request.responseText</code> â 鿍£ææå³åå¼ç¶åä¸²ç¨ |
− | * <code>http_request.responseXML</code> | + | * <code>http_request.responseXML</code> â 鿍£ææå³åå¼è¦çº <code>XMLDocument</code> ç©ä»¶ï¼èå¾å¯ç¨ JavaScript DOM ç¸éå½å¼èç |
− | == | + | == ç¬¬ä¸æ¥ - è¬äºä¿±å - ç°¡å®ç¯ä¾ == |
− | + | å¥½ï¼æ¥èå°±å䏿¬¡ç°¡å®ç HTTP ç¯ä¾ï¼æ¼ç¤ºæ¹æçåé
æå·§ãéæ®µ JavaScript æå伺æå¨è¦ä¸ä»½è£¡é æãI'm a test.ã忍£ç HTML æä»¶(<code>test.html</code>)ï¼èå¾ä»¥ <code>alert()</code> å°æä»¶å
§å®¹ååºã | |
<pre> | <pre> | ||
行 154: | 行 155: | ||
</pre> | </pre> | ||
− | + | 卿¤ç¯ä¾ä¸ï¼ | |
− | * | + | * é¦å
使ç¨è
æä¸ãMake a requestã |
− | * | + | * é麼ä¸ä¾å°±æå¼å« <code>makeRequest()</code> å½å¼ï¼äº¦å³å
¥åæ¸å¼ <code>test.html</code> (ä¹å°±æ¯é£ä»½ HTML æªçåç¨±ï¼æ¾å¨åç®éä¸) |
− | * | + | * æ¥èç¼åº requestï¼è徿å°ä¸»å°æ¬äº¤çµ¦ <code>onreadystatechange</code> æå®ç <code>alertContents()</code> å½å¼ |
− | * <code>alertContents()</code> | + | * <code>alertContents()</code> 檢æ¥åææ¯å¦æ£å¸¸ï¼èå¾ä»¥ <code>alert()</code> å° <code>test.html</code> çå
§å®¹ååº |
− | + | ä½ å¯ä»¥[http://www.w3clubs.com/mozdev/httprequest_test.html ç±æ¤æ¸¬è©¦æ¬ä¾]ï¼ä¹å¯ä»¥åè[http://www.w3clubs.com/mozdev/test.html æ¸¬è©¦æªæ¡]ã | |
− | == | + | == ç¬¬åæ¥ â ãX æªæ¡ãï¼å稱çºãèç XML åæå¼ãï¼ == |
− | + | åé¢çä¾åä¸ï¼å¨æ¶å° HTTP å³åå¼å¾æå以ç©ä»¶ç <code>reponseText</code> 屬æ§ä½¿ç¨ <code>test.html</code> æªæ¡çå
§å®¹ï¼æ¥èä¾è©¦è©¦ <code>responseXML</code> 屬æ§çæ¹æ³ã | |
− | + | é¦å
ï¼æåå¾ååæ ¼å¼æ£ç¢ºç XML æä»¶ï¼ä»¥ä¾¿ç¨å¾åç¨ãæ¤æªåå <code>test.xml</code>ï¼å
§å®¹å¦ä¸ï¼ | |
<pre> | <pre> | ||
行 175: | 行 176: | ||
</pre> | </pre> | ||
− | + | å¨ç¨å¼ä¸ï¼æåå«ç¨æªæ¡çå°æ¹åªé ç¥äºä¿®æ¹å¦ä¸ï¼ | |
<pre> | <pre> | ||
行 183: | 行 184: | ||
</pre> | </pre> | ||
− | + | æ¥èå¨ <code>alertContents()</code> ä¸ï¼æåå¿
é å° <code>alert(http_request.responseText);</code> æ¹æéæ¨£ï¼ | |
<pre> | <pre> | ||
行 191: | 行 192: | ||
</pre> | </pre> | ||
− | + | 鿍£ä¸ä¾æå便å¯åå¾ <code>responseXML</code> æå³åç <code>XMLDocument</code> ç©ä»¶ï¼èå¾ä»¥ DOM ç¸éçæ¹æ³åç¨ XML æä»¶å
§å®¹ãä½ å¯ä»¥åè [http://www.w3clubs.com/mozdev/test.xml<code>test.xml</code> çåå§ç¢¼] 以åä¿®æ¹éå¾ç[http://www.w3clubs.com/mozdev/httprequest_test_xml.html 測試ç¨å¼]ã | |
− | + | å
¶ä»è DOM ç¸éçæ¹æ³ï¼è«åè [http://www.mozilla.org/docs/dom/ Mozilla DOM] æä»¶ã | |
<div style="display:none;"> | <div style="display:none;"> | ||
− | [[{{literal2|=Category: | + | [[{{literal2|=Category:æä»¶å°æ¡|æä»¶å°æ¡=}}|{{literal2|={{PAGENAME}}|æä»¶å°æ¡=}}]] |
[[{{literal2|=Category:{{{4}}}|{{{4}}}=}}|{{literal2|={{PAGENAME}}|{{{4}}}=}}]] | [[{{literal2|=Category:{{{4}}}|{{{4}}}=}}|{{literal2|={{PAGENAME}}|{{{4}}}=}}]] | ||
[[{{literal2|=Category:{{{5}}}|{{{5}}}=}}|{{literal2|={{PAGENAME}}|{{{5}}}=}}]] | [[{{literal2|=Category:{{{5}}}|{{{5}}}=}}|{{literal2|={{PAGENAME}}|{{{5}}}=}}]] | ||
行 202: | 行 203: | ||
</div> | </div> | ||
− | <div class="page-nav"><b> | + | <div class="page-nav"><b>â§è¿åä¸ä¸é : </b>[[éç¼äººå¡æä»¶ä¸»é ]]</div> |
於 2009年7月20日 (一) 15:49 的修訂
hip hop ringtones.com vaginal photos gackt market failure quicktime skate videos links eva angelina movies black wall street linux create users big dicks fucking tight pussy horse saddle mega block pirate ship starblazers movie http huge titties link adaptation to climate change a1click ultra pc cleaner crack intervideo dvdcopy platinum 3 balcony deck tiles links antique bicycle insurance irda license surveyor sarah benck acdsee 4.0 serial marilyn manson sweet dream video adam 26 eve ochoa day spa ma libdoodle lopping shears 1800 personals college dorm tallit ronaldihno videos spongebobsquarepants movie trailer url skystar1 video game projector accessory cellular kyocera ringtone making crack from coke in job ma worcester real latin ringtones watson pharmacy hong kong forensic shakeela videos free adderall treatment disorder las vegas video deposition magnifying glass birthday card quotes index
éç¯æç« èªªæ AJAX ç¸éæè¡çåºç¤ï¼ä¸¦æä¾å¯¦ä¾ä¾æ¨ä¸æã
內容大綱
ç¬¬ä¸æ¥ â 說è²ãè«ã ï¼å稱çºãæéº¼ç¼åº XMLHttpRequestãï¼
çºäºç¨ JavaScript å°ä¼ºæå¨ç¼é HTTP è¦æ±ï¼å¿
é å
以ç¸éçé¡å¥ï¼classï¼è£½åºå¯¦é«ï¼instanceï¼ãInternet Explorer é¦å
以 ActiveX ç©ä»¶æ¹å¼æä¾ XMLHTTP
é¡å¥ï¼è MozillaãSafari åå
¶ä»ç覽å¨åé¨å¾ä»¥ XMLHttpRequest
é¡å¥æ¯æ´æ¤ ActiveX ç©ä»¶ä¸çé¡å¥å屬æ§ã
å æ¤ï¼å¦ææ³è·¨ç覽å¨ï¼é£éº¼å¯ä»¥é麼寫ï¼
if (window.XMLHttpRequest) { // Mozilla, Safari, ... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE http_request = new ActiveXObject("Microsoft.XMLHTTP"); }
(ç±æ¼é段ç¨å¼å ä¾èªªæï¼æä»¥æ¯æ¡æç°¡æ¹å¼å¯«åºãæ¬æç¬¬ä¸æ¥ä¸æå¦ä¸ç¨®æåæ¯è¼å¸¸ç¨ç寫æ³ã)
æäºçæ¬ç Mozilla ç覽å¨å¨ä¼ºæå¨éåçè³ææªå« XML mime-type æªé ï¼headerï¼ææåºé¯ãçºäºé¿å
éååé¡ï¼ä½ å¯ä»¥ç¨ä¸åæ¹æ³è¦å¯«ä¼ºæå¨å³åçæªé ï¼ä»¥å
å³åç䏿¯ text/xml
ã
http_request = new XMLHttpRequest(); http_request.overrideMimeType('text/xml');
æ¥ä¸ä¾æ¯è¦æ±ºå®ä¼ºæå¨å³åè³æå¾çèçæ¹å¼ï¼æ¤æä½ åªè¦ä»¥ onreadystatechange
éåå±¬æ§ææè¦èçå³åå¼ç JavaScript å½å¼å稱å³å¯ï¼ä¾å¦ï¼
http_request.onreadystatechange = nameOfTheFunction;
注æï¼æå®çå½å¼å稱å¾ä¸å æ¬è乿²æåæ¸ãé¤äºæå®å½å¼å稱å¤ï¼ä½ ä¹è½ç¨ Javascript 峿å®ç¾©å½å¼çæ¹æ³ä¾å®ä¸åæ°çèçå½å¼ï¼å¦ä¸ï¼
http_request.onreadystatechange = function(){ // åäºäº };
決å®èçæ¹å¼ä¹å¾ä½ å¾ç¢ºå¯¦ç¼åº requestï¼æ¤æéå«ç¨ HTTP request é¡å¥ç open()
å send()
æ¹æ³ï¼å¦ä¸ï¼
http_request.open('GET', 'http://www.example.org/some.file', true); http_request.send(null);
open()
ç第ä¸ååæ¸æ¯ HTTP request çæ¹æ³ï¼ä¹å°±æ¯å¾ GETãPOSTãHEAD 䏿ä¸ä½¿ç¨ï¼äº¦å¯ç¨ä½ 主æ©ä¸æ¯æ´çæ¹å¼ãçºéµå¾ª HTTP æ¨æºï¼è«è¨å¾éäºæ¹æ³é½æ¯å¤§å¯«ï¼ä¸ç¶æçç覽å¨ï¼å¦ Firefoxï¼æè¨±ä¸æçä½ ãå ¶ä» HTTP request å¯ä»¥æ¯æ´çæ¹æ³å表è«åè W3C è¦æ ¼æ¸ã- 第äºå忏æ¯ç®æ¨ URLãåºæ¼å®å
¨èéï¼ä½ ä¸è½å«ç¨åç¶²å以å¤çç¶²é ãå¦æç¶²åä¸åï¼åå«ç¨
open()
ææåºç¾ãæ¬éä¸è¶³ï¼æçµååãé£é¡çé¯èª¤ãé常大夥æç¯çé¯èª¤å¤çºå¨ domain.tld ç¶²çç¶²ç«ä¸å¼å« www.domain.tld ä¸çç¶²é ï¼å æ¯ä¸é»é»å·®å¥é½ä¸è¡ã - 第ä¸ååæ¸æ±ºå®æ¤ request æ¯å¦ä¸åæ¥é²è¡ï¼å¦æè¨å®çº
TRUE
åå³ä½¿ä¼ºæå¨å°æªå³åè³æä¹æç¹¼çºå·è¡å ¶é¤çç¨å¼ï¼éä¹å°±æ¯ AJAX ä¸ç¬¬ä¸å A 代表çæç¾©ã
send()
ç忏å¨ä»¥ POST ç¼åº request æå¯ä»¥æ¯ä»»ä½æ³å³çµ¦ä¼ºæå¨çæ±è¥¿ï¼èè³æå以æ¥è©¢åä¸²çæ¹å¼ååºï¼ä¾å¦ï¼
name=value&anothername=othervalue&so=on
ä¸éå¦æä½ æ³è¦ä»¥ POST æ¹å¼å³éè³æï¼åå¿ é å å° MIME åæ æ¹å¥½ï¼å¦ä¸ï¼
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
å¦å伺æå¨å°±ä¸æçä½ å³éä¾çè³æäºã
ç¬¬äºæ¥ â ãå°±ä¸å©ï¼ãï¼å稱çºãèç伺æå¨å³åçè³æãï¼
å³åº request æå¿ é æä¾èçå³åå¼çå½å¼å稱ã
http_request.onreadystatechange = nameOfTheFunction;
é£éº¼ä¾ççéåå½å¼è©²åäºä»éº¼ãé¦å ï¼å®å¿ é æª¢æ¥ request ç®åççæ ï¼å¦æçæ å¼çº 4 代表伺æå¨å·²ç¶å³åææè³è¨äºï¼ä¾¿å¯ä»¥éå§è§£ææå¾è³è¨ã
if (http_request.readyState == 4) { // ä¸å ok, ç¹¼çºè§£æ } else { // 鿲宿 }
readyState
ææå¯è½çå¼å¦ä¸ï¼
- 0 (éæ²éå§)
- 1 (è®åä¸)
- 2 (å·²è®å)
- 3 (è³è¨äº¤æä¸)
- 4 (ä¸å宿)
æ¥ä¸ä¾è¦æª¢æ¥ä¼ºæå¨å³åç HTTP çæ
ç¢¼ãææçæ
碼åè¡¨å¯æ¼ W3C ç¶²ç«ä¸æ¥å°ï¼ä½æåè¦ç®¡çæ¯ 200 OK
é種çæ
ã
if (http_request.status == 200) { // è¬äºå ·å } else { // 似乿é»åé¡ï¼æè¨±ä¼ºæå¨å³åäº 404 (æ¥ç¡æ¤é ) æè 500 (å §é¨é¯èª¤) ä»éº¼ç }
檢æ¥å³åç HTTP çæ ç¢¼å¾ï¼è¦æéº¼èçå³åçè³æå°±ç±ä½ 決å®äºãæå ©ç¨®ååè³æçæ¹å¼ï¼
http_request.responseText
â 鿍£ææå³åå¼ç¶å串ç¨http_request.responseXML
â 鿍£ææå³åå¼è¦çºXMLDocument
ç©ä»¶ï¼èå¾å¯ç¨ JavaScript DOM ç¸éå½å¼èç
ç¬¬ä¸æ¥ - è¬äºä¿±å - ç°¡å®ç¯ä¾
å¥½ï¼æ¥èå°±å䏿¬¡ç°¡å®ç HTTP ç¯ä¾ï¼æ¼ç¤ºæ¹æçåé
æå·§ãéæ®µ JavaScript æå伺æå¨è¦ä¸ä»½è£¡é æãI'm a test.ã忍£ç HTML æä»¶(test.html
)ï¼èå¾ä»¥ alert()
å°æä»¶å
§å®¹ååºã
<script type="text/javascript" language="javascript"> var http_request = false; function makeRequest(url) { http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); if (http_request.overrideMimeType) { http_request.overrideMimeType('text/xml'); } } else if (window.ActiveXObject) { // IE try { http_request = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { http_request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {} } } if (!http_request) { alert('Giving up :( Cannot create an XMLHTTP instance'); return false; } http_request.onreadystatechange = alertContents; http_request.open('GET', url, true); http_request.send(null); } function alertContents() { if (http_request.readyState == 4) { if (http_request.status == 200) { alert(http_request.responseText); } else { alert('There was a problem with the request.'); } } } </script> <span style="cursor: pointer; text-decoration: underline" onclick="makeRequest('test.html')"> Make a request </span>
卿¤ç¯ä¾ä¸ï¼
- é¦å 使ç¨è æä¸ãMake a requestã
- é麼ä¸ä¾å°±æå¼å«
makeRequest()
å½å¼ï¼äº¦å³å ¥åæ¸å¼test.html
(ä¹å°±æ¯é£ä»½ HTML æªçåç¨±ï¼æ¾å¨åç®éä¸) - æ¥èç¼åº requestï¼è徿å°ä¸»å°æ¬äº¤çµ¦
onreadystatechange
æå®çalertContents()
å½å¼ alertContents()
檢æ¥åææ¯å¦æ£å¸¸ï¼èå¾ä»¥alert()
å°test.html
çå §å®¹ååº
ä½ å¯ä»¥ç±æ¤æ¸¬è©¦æ¬ä¾ï¼ä¹å¯ä»¥åèæ¸¬è©¦æªæ¡ã
ç¬¬åæ¥ â ãX æªæ¡ãï¼å稱çºãèç XML åæå¼ãï¼
åé¢çä¾åä¸ï¼å¨æ¶å° HTTP å³åå¼å¾æå以ç©ä»¶ç reponseText
屬æ§ä½¿ç¨ test.html
æªæ¡çå
§å®¹ï¼æ¥èä¾è©¦è©¦ responseXML
屬æ§çæ¹æ³ã
é¦å
ï¼æåå¾ååæ ¼å¼æ£ç¢ºç XML æä»¶ï¼ä»¥ä¾¿ç¨å¾åç¨ãæ¤æªåå test.xml
ï¼å
§å®¹å¦ä¸ï¼
<?xml version="1.0" ?> <root> I'm a test. </root>
å¨ç¨å¼ä¸ï¼æåå«ç¨æªæ¡çå°æ¹åªé ç¥äºä¿®æ¹å¦ä¸ï¼
... onclick="makeRequest('test.xml')"> ...
æ¥èå¨ alertContents()
ä¸ï¼æåå¿
é å° alert(http_request.responseText);
æ¹æéæ¨£ï¼
var xmldoc = http_request.responseXML; var root_node = xmldoc.getElementsByTagName('root').item(0); alert(root_node.firstChild.data);
鿍£ä¸ä¾æå便å¯åå¾ responseXML
æå³åç XMLDocument
ç©ä»¶ï¼èå¾ä»¥ DOM ç¸éçæ¹æ³åç¨ XML æä»¶å
§å®¹ãä½ å¯ä»¥åè test.xml
çåå§ç¢¼ 以åä¿®æ¹éå¾ç測試ç¨å¼ã
å ¶ä»è DOM ç¸éçæ¹æ³ï¼è«åè Mozilla DOM æä»¶ã