AJAXãšã¯äœã§ããïŒ
AJAXã¯ãéåæJavascriptãšXMLã®ç¥ã§ãã å®éãAJAXã¯æ°ãããã¯ãããžãŒã§ã¯ãããŸãããJavascriptãšXMLã®äž¡æ¹ãããªãåããååšããŠãããAJAXã¯ç€ºããããã¯ãããžãŒã®çµ±åã§ããããã§ãã AJAXã¯ã»ãšãã©ã®å ŽåãWeb 2.0ãšããçšèªã«é¢é£ä»ããããŠãããææ°ã®Webã¢ããªã±ãŒã·ã§ã³ãšããŠå®£äŒãããŠããŸãã
AJAXã䜿çšããå Žåãç¹å®ã®éšåã®ã¿ãæŽæ°ããããããæ¯åããŒãžå šäœãæŽæ°ããå¿ èŠã¯ãããŸããã 誰ããç¡å¶éã«ã€ã³ã¿ãŒãããã«ã¢ã¯ã»ã¹ã§ããããã§ã¯ãªããããé·ãåŸ ã€å¿ èŠããªãçµæžçã§ãã 確ãã«ããã®å Žåãéçºè ã¯ãŠãŒã¶ãŒãããŒãžã§äœãèµ·ãã£ãŠããã®ãã確å®ã«èªèããå¿ èŠããããŸãã ããã¯ãããŠã³ããŒãã€ã³ãžã±ãŒã¿ãŒããµãŒããŒãšã®ããŒã¿äº€æãããããšã瀺ãããã¹ãã¡ãã»ãŒãžã䜿çšããŠå®è£ ã§ããŸãã ãŸãããã¹ãŠã®ãã©ãŠã¶ãŒãAJAXïŒãã©ãŠã¶ãŒãšããã¹ããã©ãŠã¶ãŒã®å€ãããŒãžã§ã³ïŒããµããŒãããŠããããã§ã¯ãªãããšãç解ããå¿ èŠããããŸãã ãŸãããŠãŒã¶ãŒã¯Javascriptãç¡å¹ã«ã§ããŸãã ãããã£ãŠããã¯ãããžãŒã®äœ¿çšãä¹±çšããããWebãµã€ãã§æ å ±ãæ瀺ããå¥ã®æ¹æ³ã«é Œã£ããããã¹ãã§ã¯ãããŸããã
AJAXã®å©ç¹ãèŠçŽããŸãã
- 䟿å©ãªWebã€ã³ã¿ãŒãã§ãŒã¹ãäœæããæ©èœ
- ã¢ã¯ãã£ããªãŠãŒã¶ãŒã€ã³ã¿ã©ã¯ã·ã§ã³
- å®å šã§ã¯ãªãéšåçãªããŒãžã®ãªããŒã
- 䜿ãããã
AJAXã¯ãWebããŒãžãæäœããããã«ãWebããŒãžããªããŒãããã«å€æŽããæ¹æ³ãšããµãŒããŒã«åçã«ã¢ã¯ã»ã¹ããæ¹æ³ã®2ã€ã䜿çšããŸãã åŸè ã¯ããã€ãã®æ¹æ³ã§å®è£ ã§ããŸããç¹ã«ãXMLHttpRequestã«ã€ããŠèª¬æããŸããããã«ã€ããŠã¯ãé衚瀺ãã¬ãŒã ãã¯ããã¯ã䜿çšããŸãã
ããŒã¿äº€æ
ããŒã¿ã亀æããã«ã¯ãããŒãžäžã«XMLHttpRequestãªããžã§ã¯ããäœæããå¿ èŠããããŸããããã¯ããŠãŒã¶ãŒã®ãã©ãŠã¶ãŒãšãµãŒããŒã®éã®äžçš®ã®ä»²ä»è ã§ãïŒå³1ïŒã XMLHttpRequestã䜿çšãããšããµãŒããŒã«èŠæ±ãéä¿¡ããããããŸããŸãªçš®é¡ã®ããŒã¿ã®åœ¢åŒã§å¿çãåä¿¡ãããã§ããŸãã
ãµãŒããŒãšããŒã¿ã亀æããã«ã¯2ã€ã®æ¹æ³ããããŸãã æåã®æ¹æ³ã¯GETãªã¯ãšã¹ãã§ãã ãã®ãªã¯ãšã¹ãã§ã¯ããµãŒããŒäžã®ããã¥ã¡ã³ãã«ã¢ã¯ã»ã¹ããURLèªäœã«åŒæ°ãæž¡ããŸãã åæã«ãã¯ã©ã€ã¢ã³ãåŽã§JavaScripté¢æ°ãšã¹ã±ãŒãã䜿çšããŠãäžéšã®ããŒã¿ãèŠæ±ãäžæããªãããã«ããããšãè«ççã§ãã
倧éã®ããŒã¿ããããµãŒããŒã«å¯ŸããŠGETèŠæ±ãè¡ãããšã¯ãå§ãããŸããã ããã«ã¯POSTãªã¯ãšã¹ãããããŸãã
Javascriptã§èšè¿°ãããã¯ã©ã€ã¢ã³ãéšåã¯ããµãŒããŒãšã®å®å šãªäº€æã«å¿ èŠãªæ©èœãæäŸããäžèšã®ããããã®æ¹æ³ã§ããŒã¿ã亀æããããã®ã¡ãœãããæäŸããå¿ èŠããããŸãã ãµãŒããŒéšåã¯å ¥åããŒã¿ãåŠçããããã«åºã¥ããŠæ°ããæ å ±ãçæãïŒããšãã°ãããŒã¿ããŒã¹ãæäœããïŒãã¯ã©ã€ã¢ã³ãã«è¿ãå¿ èŠããããŸãã ããšãã°ããµãŒããŒããæ å ±ãèŠæ±ããã«ã¯ããµã€ãºã®å°ããããã€ãã®ãã©ã¡ãŒã¿ãŒãéä¿¡ããéåžžã®GETèŠæ±ã䜿çšããæ å ±ãæŽæ°ãŸãã¯æ°ããæ å ±ãè¿œå ããã«ã¯ã倧éã®ããŒã¿ã転éã§ãããããPOSTèŠæ±ã䜿çšããå¿ èŠããããŸãã
æ¢ã«è¿°ã¹ãããã«ãAJAXã¯éåæããŒã¿è»¢éã䜿çšããŸãã ããã¯ãããŒã¿ã®è»¢éäžã«ããŠãŒã¶ãŒãèªåã«å¿ èŠãªä»ã®ã¢ã¯ã·ã§ã³ãå®è¡ã§ããããšãæå³ããŸãã ãã®æç¹ã§ãäœããã®ããŒã¿äº€æãããããšããŠãŒã¶ãŒã«éç¥ããå¿ èŠããããŸããããããªããšããŠãŒã¶ãŒã¯äœããééã£ãŠãããšæãããµã€ããé¢ããããé¢æ°ãååŒã³åºãã§ããŸãã Web 2.0ã¢ããªã±ãŒã·ã§ã³ã§ã®ããŒã¿äº€æäžã®è¡šç€ºã¯éåžžã«éèŠãªåœ¹å²ãæãããŸãã蚪åè ã¯ããŒãžã®æŽæ°æ¹æ³ã«ãŸã æ £ããŠããªãå¯èœæ§ããããŸãã
ãµãŒããŒããã®å¿çã¯ããã¯ãããžã®ååã瀺ããšãããXMLã ãã§ã¯ãããŸããã XMLã«å ããŠããã¬ãŒã³ããã¹ããŸãã¯JSONïŒJavascript Object NotationïŒã§åçãååŸã§ããŸãã åçããã¬ãŒã³ããã¹ãã§åä¿¡ãããå Žåãããã«ããŒãžã®ã³ã³ããã«è¡šç€ºã§ããŸãã XMLã®åœ¢åŒã§å¿çãåä¿¡ãããšãã¯ã©ã€ã¢ã³ãåŽã§åä¿¡ããXMLããã¥ã¡ã³ãã®åŠçãšããŒã¿ã®ïŒXïŒHTMLãžã®å€æãéåžžçºçããŸãã JSON圢åŒã§å¿çãåä¿¡ããå Žåãã¯ã©ã€ã¢ã³ãã¯åä¿¡ããã³ãŒãïŒJavascripté¢æ°evalïŒãå®è¡ããã ãã§ãæ¬æ ŒçãªJavascriptãªããžã§ã¯ããååŸã§ããŸãã ãã ããããã§ã¯ããã®æè¡ã䜿çšããŠæªæã®ããã³ãŒããéä¿¡ãããå¯èœæ§ãããããšã«æ³šæããèæ ®ããå¿ èŠããããŸãããããã£ãŠããµãŒããŒããåä¿¡ããã³ãŒããå®è¡ããåã«ãæ éã«ãã§ãã¯ããŠåŠçããå¿ èŠããããŸãã ãµãŒããŒããã®å¿çã¯ãªãããµãŒããŒåŽã®ããŒã¿ã®ã¿ãå€æŽãããããã©ã³ã¯ããªã¯ãšã¹ããªã©ã®ãã©ã¯ãã£ã¹ããããŸãã
ç°ãªããã©ãŠã¶ã§ã¯ããã®ãªããžã§ã¯ãã«ã¯ç°ãªãããããã£ããããŸãããäžè¬çã«ã¯åãã§ãã
XMLHttpRequestãªããžã§ã¯ãã¡ãœãã
ã¡ãœããåã¯ãä»ã®JavaScripté¢æ°ãšåãã¹ã¿ã€ã«ïŒãã£ã¡ã«ã¹ã¿ã€ã«ïŒã§èšè¿°ãããŠããããšã«æ³šæããŠãã ããã ãããã䜿çšãããšãã¯æ³šæããŠãã ããã
abortïŒïŒ -ãµãŒããŒãžã®çŸåšã®ãªã¯ãšã¹ãããã£ã³ã»ã«ããŸãã
getAllResponseHeadersïŒïŒ -ãµãŒããŒãããã¹ãŠã®å¿çããããŒãååŸããŸãã
getResponseHeaderïŒ "header_name"ïŒ - æå®ãããããããŒãååŸããŸã ã
openïŒ "request_type"ã "URL"ã "asynchronous"ã "username"ã "password"ïŒ -ãµãŒããŒãžã®ãªã¯ãšã¹ãã®åæåããªã¯ãšã¹ãã¡ãœããã瀺ããŸãã èŠæ±ã¿ã€ããšURLã¯å¿ é ãã©ã¡ãŒã¿ãŒã§ãã 3çªç®ã®åŒæ°ã¯ããŒã«å€ã§ãã éåžžã¯åžžã«çã§ãããããŸã£ããæå®ãããŠããŸããïŒããã©ã«ãã¯çã§ãïŒã 4çªç®ãš5çªç®ã®åŒæ°ã¯èªèšŒã«äœ¿çšãããŸãïŒãã¹ãŠã®ãŠãŒã¶ãŒãã¹ã¯ãªããã衚瀺ã§ãããããã¹ã¯ãªããã«èªèšŒæ å ±ãä¿åããããšã¯éåžžã«å®å šã§ã¯ãããŸããïŒã
sendïŒ "content"ïŒ -HTTPèŠæ±ããµãŒããŒã«éä¿¡ããå¿çãåä¿¡ããŸãã
setRequestHeaderïŒ "header_name"ã "value"ïŒ -ãªã¯ãšã¹ãããããŒã®å€ãèšå®ããŸãã
XMLHttpRequestãªããžã§ã¯ãã®ããããã£
onreadystatechangeã¯ãXMLHttpRequestãªããžã§ã¯ãã®æãéèŠãªããããã£ã®1ã€ã§ãã ãã®ããããã£ã䜿çšããŠããªããžã§ã¯ãã®ã¹ããŒã¿ã¹ãå€æŽããããã³ã«åŒã³åºããããã³ãã©ãŒãèšå®ãããŸãã
readyStateã¯ããªããžã§ã¯ãã®ã¹ããŒã¿ã¹ã瀺ãæ°å€ã§ãã
responseText-ãã¬ãŒã³ããã¹ãïŒæååïŒã§ã®ãµãŒããŒå¿çã®è¡šçŸã
responseXMLã¯ããµãŒããŒããåä¿¡ããDOMãšäºææ§ã®ããããã¥ã¡ã³ããªããžã§ã¯ãã§ãã
status-ãµãŒããŒããã®å¿çã®ã¹ããŒã¿ã¹ã
statusText-ãµãŒããŒããã®å¿çã®ã¹ããŒã¿ã¹ã®ããã¹ãè¡šçŸã
readyStateããããã£ããã詳现ã«æ€èšããŠãã ããïŒ
- 0-ãªããžã§ã¯ãã¯åæåãããŠããŸããã
- 1-ãªããžã§ã¯ãã¯ããŒã¿ãããŒãããŠããŸãã
- 2-ãªããžã§ã¯ãã¯ãã®ããŒã¿ãã¢ããããŒãããŸããã
- 3-ãªããžã§ã¯ãã¯å®å šã«ã¯ããŒããããŠããŸãããããŠãŒã¶ãŒãšå¯Ÿè©±ã§ããŸãã
- 4-ãªããžã§ã¯ãã¯å®å šã«åæåãããŸãã ãµãŒããŒããå¿çãåãåããŸããã
ãªããžã§ã¯ãã®æºåç¶æ ã«åºã¥ããŠããµãŒããŒãšã®ããŒã¿äº€æããã»ã¹ãã©ã®æ®µéã«ãããã«ã€ããŠã®æ å ±ã蚪åè ã«æäŸããå Žåã«ãã£ãŠã¯èŠèŠçã«éç¥ããããšãã§ããŸãã
XMLHttpRequestãªããžã§ã¯ãã®äœæ
åè¿°ã®ããã«ããã©ãŠã¶ã®çš®é¡ããšã«ãã®ãªããžã§ã¯ããäœæããããšã¯ç¬èªã®ããã»ã¹ã§ãã
ããšãã°ãGeckoäºæãã©ãŠã¶ãKonquerorããã³Safariã§ãªããžã§ã¯ããäœæããã«ã¯ã次ã®åŒã䜿çšããå¿ èŠããããŸãã
var Request = new XMLHttpRequest();
ãŸããInternet Explorerã§ã¯ã次ã®ãã®ã䜿çšãããŸãã
var Request = new ActiveXObject("Microsoft.XMLHTTP");
ã©ã¡ãã
var Request = new ActiveXObject("Msxml2.XMLHTTP");
çŸåšããã©ãŠã¶éã®äºææ§ãå®çŸããã«ã¯ããã¹ãŠã®æ©èœã1ã€ã«è¿œå ããå¿ èŠããããŸãã
function CreateRequest() { var Request = false; if (window.XMLHttpRequest) { //Gecko- , Safari, Konqueror Request = new XMLHttpRequest(); } else if (window.ActiveXObject) { //Internet explorer try { Request = new ActiveXObject("Microsoft.XMLHTTP"); } catch (CatchException) { Request = new ActiveXObject("Msxml2.XMLHTTP"); } } if (!Request) { alert(" XMLHttpRequest"); } return Request; }
ãã®ãã¹ãŠã®åŸããã®ãªããžã§ã¯ããäœæããããšãã§ããäžè¬çãªãã©ãŠã¶ã§ã®ããã©ãŒãã³ã¹ã«ã€ããŠå¿é ããå¿ èŠã¯ãããŸããã ãã ããããŸããŸãªå Žæã§ãªããžã§ã¯ããäœæã§ããŸãã ã°ããŒãã«ã«äœæãããšãç¹å®ã®æç¹ã§ãµãŒããŒãžã®ãªã¯ãšã¹ãã¯1ã€ã ãå¯èœã«ãªããŸãã ãµãŒããŒãžã®èŠæ±ãçºçãããã³ã«ãªããžã§ã¯ããäœæã§ããŸãïŒããã«ãããåé¡ã¯ã»ãŒå®å šã«è§£æ±ºãããŸãïŒã
ãµãŒããŒãªã¯ãšã¹ã
ãµãŒããŒèŠæ±ã¢ã«ãŽãªãºã ã¯æ¬¡ã®ããã«ãªããŸãã
- XMLHttpRequestã確èªããŠãã ããã
- ãµãŒããŒæ¥ç¶ã®åæåã
- ãµãŒããŒã«ãªã¯ãšã¹ããéä¿¡ããŸãã
- åä¿¡ããŒã¿ã®åŠçã
ãµãŒããŒãžã®ãªã¯ãšã¹ããäœæããããã«ãGETããã³POSTãªã¯ãšã¹ãã®æ©èœãæ©èœããšã«çµã¿åãããå°ããªæ©èœãäœæããŸãã
/* r_method - : GET POST r_path - r_args - a=1&b=2&c=3... r_handler - - */ function SendRequest(r_method, r_path, r_args, r_handler) { // var Request = CreateRequest(); // if (!Request) { return; } // Request.onreadystatechange = function() { // if (Request.readyState == 4) { // r_handler(Request); } } //, GET- if (r_method.toLowerCase() == "get" && r_args.length > 0) r_path += "?" + r_args; // Request.open(r_method, r_path, true); if (r_method.toLowerCase() == "post") { // POST- // Request.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8"); // Request.send(r_args); } else { // GET- // - Request.send(null); } }
ã¯ãšãªã®äœæãã¯ããã«ç°¡åã«ãªããŸããã äŸãšããŠããµãŒããŒäžã®ãã¡ã€ã«ã®å 容ãåãåãããããã³ã³ããã«åºåããé¢æ°ãäœæããŸãã
function ReadFile(filename, container) { // var Handler = function(Request) { document.getElementById(container).innerHTML = Request.responseText; } // SendRequest("GET",filename,"",Handler); }
ããã¯ããµãŒããŒãšã®å¯Ÿè©±ãçºçããæ¹æ³ã§ãã
å¿çåŠç
åã®äŸã§ã¯ããµãŒããŒèŠæ±é¢æ°ãäœæããŸããã ããããå®éã«ã¯ããªããžã§ã¯ãã®ç¶æ ãšãµãŒããŒããã®å¿çã®ç¶æ ãåŠçããªããããå®å šã§ã¯ãããŸããã
ããŒãããã»ã¹ã«é¢ããèŠèŠçãªéç¥ã衚瀺ã§ããããã«ãã³ãŒããè£è¶³ããŸãã
... Request.onreadystatechange = function() { // if (Request.readyState == 4) { // r_handler(Request); } else { // } } ...
æ¢ã«ãåãã®ãšãããXMLHttpRequestãªããžã§ã¯ãã䜿çšãããšããµãŒããŒããã®å¿çã®ã¹ããŒã¿ã¹ã確èªã§ããŸãã ãã®æ©äŒãå©çšããŠãã ããã
... Request.onreadystatechange = function() { // if (Request.readyState == 4) { if (Request.status == 200) { // r_handler(Request); } else { // } } else { // } } ...
ãµãŒããŒå¿çãªãã·ã§ã³
ãµãŒããŒããããã€ãã®ã¿ã€ãã®ããŒã¿ãåä¿¡ã§ããŸãã
- å¹³æ
- XML
- ãžã§ã³ãœã³
ãã¬ãŒã³ããã¹ããåãåã£ãå Žåã¯ãããã«ã³ã³ãããã€ãŸãåºåã«éä¿¡ã§ããŸãã XMLã§ããŒã¿ãåä¿¡ããå ŽåãDOMé¢æ°ã䜿çšããŠããŒã¿ãåŠçããHTMLã䜿çšããŠçµæãæ瀺ããå¿ èŠããããŸãã
JSONã¯Javascriptãªããžã§ã¯ãè¡šèšã§ãã ããã䜿çšããŠããªããžã§ã¯ããæååãšããŠè¡šãããšãã§ããŸãïŒããã§ã¯ãã·ãªã¢ã«åé¢æ°ãšã®é¡äŒŒæ§ã瀺ãããšãã§ããŸãïŒã JSONããŒã¿ãåä¿¡ããå Žåãæ¬æ ŒçãªJavascriptãªããžã§ã¯ããååŸããŠå¿ èŠãªæäœãå®è¡ããã«ã¯ãJSONããŒã¿ãå®è¡ããå¿ èŠããããŸãã ãã®ãããªããŒã¿ã®è»¢éãšå®è¡ã¯å®å šã§ã¯ãªãããšã«æ³šæããŠãã ããã å®æœãããŠããå 容ã远跡ããå¿ èŠããããŸãã
ãµã³ãã«JSONã³ãŒãïŒ
{ "data": { "misc": [ { "name" : "JSON- ", "type" : " 1" }, { "name" : "JSON- ", "type" : " 2" } ] } }
ãã®ãããªã³ãŒããåä¿¡ãããšã次ã®ã¢ã¯ã·ã§ã³ãå®è¡ããŸãã
var responsedata = eval("(" + Request.responseText + ")")
ãã®ã³ãŒããå®è¡ãããšã responsedataãªããžã§ã¯ãã䜿çšå¯èœã«ãªããŸãã
ãµãŒããŒããã°ã©ãã³ã°èšèªã§äœæ¥ãã
ãã®ãããªäœæ¥ã¯ãéåžžãšå€ãããŸããã äŸãšããŠããµãŒããŒèšèªãšããŠPHPãåãäžããŸãã ã¯ã©ã€ã¢ã³ãéšåã§ã¯äœãå€æŽãããŠããŸãããããµãŒããŒéšåã¯PHPãã¡ã€ã«ã§è¡šãããŠããŸãã
äŒçµ±çã«ãçŽ æŽãããäžçã«æšæ¶ããããšããå§ããŸãããã
echo "Hello, World!";
ãã®ãã¡ã€ã«ã«ã¢ã¯ã»ã¹ãããšãæååHelloãWorldãã¯ã©ã€ã¢ã³ãã«è¿ãããŸãã ãåç¥ã®ããã«ãããã¯ã¢ããªã±ãŒã·ã§ã³ãæ§ç¯ããããã®æãåºãå¯èœæ§ã瀺ããŠããŸãã XMLHttpRequestã䜿çšããŠãµãŒããŒãåŒã³åºããšãã«åŒæ°ãæž¡ãããšã«åºã¥ããŠãåºåããã©ã¡ãŒã¿ãŒåããŠãWebã¢ããªã±ãŒã·ã§ã³ã«åºç¯ãªæ©èœãæäŸããããšãã§ããŸãã
PHPã«å ããŠãä»ã®ãµãŒããŒåŽããã°ã©ãã³ã°èšèªã䜿çšã§ããŸãã
é¢é£æç®
ãã®èšäºã¯ãæ°äººã«AJAXã®åäœãå éšããäŒããããšãç®çãšããŠæžãããŸããã äœããäžæ£ç¢ºãŸãã¯ééã£ãŠæžãããŠããããã«æãããå Žåã¯ã䟡å€ã®ããèšäºãäžç·ã«äœæããããã«ç§ãä¿®æ£ããŠãã ããã
ãã¡ãããå¯èœã§ããã°ãæ¢åã®ãã¬ãŒã ã¯ãŒã¯ã䜿çšãã䟡å€ããããšæããŸãã ãããããããã©ã®ããã«æ©èœããããç¥ãããšã¯ãŸã å¿ èŠã§ãã