ãªãJSONPã ã¨ã¯ãã¹ãã¡ã¤ã³å¶ç´ãè¶ ããããã®ãï¼
ããªãé常ã®XMLHttpRequestã«ã¯ã¯ãã¹ãã¡ã¤ã³å¶ç´ãããã®ã«ãJSONPã§ã¯ã¯ãã¹ãã¡ã¤ã³ã§ãªã¯ã¨ã¹ããéä¿¡ã§ããã®ãï¼ä¸æè°ã«æããã®ã§ãã¡ãã£ã¨èª¿ã¹ã¦ã¿ãã
ãã¯ãã¹ãã¡ã¤ã³å¶ç´ã¯ããã©ã¦ã¶ä¸ã§å®è¡ãããJavaScriptã¯åããã¡ã¤ã³ã«ãããªã¯ã¨ã¹ãã®éä¿¡ãã¯ããã¼ã®ç·¨éãè¡ããªããã¨ããå¶éã§ããã
ããªããã®ãããªå¶éãå¿
è¦ã«ãªãã®ããã¯ãã¹ãã¡ã¤ã³å¶ç´ããªãã£ããã©ããªãããæèå®é¨ãã¦ã¿ããããã©ã¦ã¶ä¸ã§ã¯ãããã¤ãã®ãµã¤ããããã¦ã³ãã¼ããã¦ããJavaScriptãåæã«å®è¡ããããã¨ã¯çãããªããã¾ããæªæã®ãããã¼ã¸ã«ã¢ã¯ã»ã¹ãã¦ãã¾ããæªæããJavaScriptãå®è¡ãã¦ãã¾ããã¨ããååã«èµ·ããå¾ã話ã§ãããééãã¦å¤ãªãã¼ã¸ã«ã¢ã¯ã»ã¹ãããè´å½çãªåé¡ãèµ·ãã¾ãããã§ã¯ã¾ããã®ã§ããã©ã¦ã¶ã§ã¯JavaScriptãã§ããäºã«ããªãã®å¶éãä¸ãã¦ãããXMLHttpRequestã®ã¯ãã¹ãã¡ã¤ã³å¶ç´ããã®å¶éã®ä¸ã¤ã§ããã
ãXMLHttpRequestã¯ãJavaScriptãèªç±ã«HTTPéä¿¡ãè¡ããé常ã«å¼·åãªæ©è½ã§ãããã¯ãã¹ãã¡ã¤ã³å¶ç´ããªããæªæããJavaScriptãèªç±ã«XMLHttpRequestãããããªãµã¤ãã«éãäºãã§ãããã©ããªãã ãããï¼
ãä¾ãã°ãéè¡ã®ãµã¤ãã«ãã°ã¤ã³ããç¶æ
ã§ãå¥ã®ã¿ãã§æªæã®ãããµã¤ãã«ã¢ã¯ã»ã¹ãããã®ã¨ãããæªæããJavaScriptãèªç±ã«XMLHttpRequestãéããã¨ããã¨ããã©ã¦ã¶ããèªè¨¼ã¯ããã¼ãéãããã¨ããä»®å®ã®å
ã§ã¯ããããæªæããJavaScriptã¯å£åº§æ®é«ã®æ
å ±ãªã©ãç°¡åã«åãã¦ãã¾ãããééä½æ¥ãªãããã§ãããããããªãããã©ã¦ã¶ã¨ããã®ã¯è¤æ°ã®ãã¼ã¸ã®æ
å ±ãåæã«ãã¼ããã¦ãããã®ãªã®ã§ããµã¼ãã¼å´ã«ããæ©å¯æ
å ±ãå®ãããã«ã¯ãã¹ãã¡ã¤ã³å¶ç´ãéè¦ãªã®ã§ããããµã¼ãã¼å´ã«ãããã¨è¡¨ç¾ããã®ã¯ããã©ã¦ã¶å´ï¼ã¯ã©ã¤ã¢ã³ãå´ï¼ã«ãæ©å¯æ
å ±ã¯åå¨ããããã ããããããå¥ã®ã¿ãã®å
容ã«é¢ãã¦ã¯ããã©ã¦ã¶ã«ãã°ããªãéã絶対ã«åç
§ã§ããªãããã«ãªã£ã¦ãããå½ããåã®ä»æ§ãªã®ã§ç¹ã«ååã¨ãã¯ã¤ãã¦ããªãã
ãã¯ãã¹ãã¡ã¤ã³å¶ç´ã¯ãæªæãããµã¤ãã«ã¢ã¯ã»ã¹ããéã«æ
å ±ãæ¼æ´©ãããã¨ãé²ãããã«ãã©ã¦ã¶ãæä¾ããä»çµã¿ãªã®ã ãã§ã¯ãJSONPã¯ãªãã¯ãã¹ãã¡ã¤ã³å¶ç´ãç ´ããã®ã ãããããªãã»ãã¥ãªãã£ä¸ã®åé¡ã«ãªããªãã®ãï¼
ãã¾ããJSONPã使ãããå ´é¢ã«ã¤ãã¦èãã¦ã¿ããããããããä¸ã®ä¸ã«ã¯æ©å¯æ
å ±ã¨ããã§ãªãæ
å ±ããããã¯ãã¹ãã¡ã¤ã³å¶ç´ãéè¦ãªã®ã¯ãæªæããJavaScriptãããªãã®ãã©ã¦ã¶ä¸ã§å®è¡ãããéè¡ãªã©ã®ãµã¼ãã¼ã«ã¢ã¯ã»ã¹ãã¦æ©å¯æ
å ±ãçã¿åºãäºãé²ãããã§ãããã¯ãã¹ãã¡ã¤ã³å¶ç´ã®ãããã§ãæªæã®ããJavaScriptãå®è¡ããã¦ããæ©å¯æ
å ±ã«ã¯ã¢ã¯ã»ã¹ã§ããªãã
ãããã§ãã¤ã³ãã«ãªãã®ããJSONPã¯ã¯ãã¹ãã¡ã¤ã³å¶ç´ãåé¿ãã¦éä¿¡ããããã«ãããããµã¼ãã¼å´ã§å¯¾å¿ãå¿
è¦ã«ãªãã¨ããç¹ã§ãããå¾è¿°ããããJSONPã§ã¾ã¨ãã«æ©å¯æ
å ±ãæ±ããã¨ã¯ä¸å¯è½ã«è¿ããã¤ã¾ããJSONPã®APIãããããç¨æããã¨ãããã¨ã¯ãããã§æä¾ãããæ
å ±ã¯æ©å¯æ
å ±ã§ã¯ãªãã¯ãã§ããã
ããæ©å¯æ
å ±ã§ãªããã°JSONPã§æä¾ãã¦ããããã®ã ãéã«ããªã«ãèããã«æ©å¯æ
å ±ãJSONPã§æä¾ãããããªãµã¤ããåºã¦ãã¦ãã¾ãã¨ãããã¯ã»ãã¥ãªãã£ä¸ã®åé¡ã«ãªãã ããããã ããããã¯ãã®ãµã¤ãã®èå¼±æ§ã§ãã£ã¦ãã©ã¦ã¶ã®èå¼±æ§ã§ã¯ãªããJSONPã®APIãæä¾ãããã©ããã¯ãã®ãµã¤ãã決ããããã ã
ãããã¾ã§ãä¸æ¦ç®æ¡æ¸ãã§ã¾ã¨ãããã
- ãã©ã¦ã¶ä¸ã§ã¯è¤æ°ã®ãµã¤ãã®JavaScriptãå®è¡ããããããç¡å¶éã«XMLHttpRequestã§ã©ãã«ã§ããªã¯ã¨ã¹ããé£ã°ããã¨ã¾ãã
- JSONPã¯ããããJSONPã®ããã«ãµã¼ãã¼å´ã§æºåããªãã¨ä½¿ããªãï¼ãã¼ã¿ãããããJavaScriptã®ã³ã¼ã«ããã¯å½¢å¼ã§æ¸¡ããªãã¨ãããªãï¼ãããã¯ãã¹ãã¡ã¤ã³å¶ç´ãåé¿ãã¦ãã»ãã¥ãªãã£ä¸åé¡ã«ã¯ãªããªããããã¡ããæ©å¯æ å ±ãJSONPã«å«ãã§ã¯ãªããªã
ããJSONP APIããµã¼ãã¼å´ã§ããããç¨æãããã¨ããã¨ããããããã®æ
å ±ã¯æ©å¯æ
å ±ã§ã¯ãªããã¨å®£è¨ãããã¨ã«ç¸å½ãããããããã¼ããã£ã¨ããã£ã¦ãã£ããããã
ããã¦ãç¡å¶éã«XMLHttpRequestã使ããã¨ã¾ããã¨ããäºã¯ããã£ãããã¯ãã¹ãã¡ã¤ã³å¶ç´ã¯å³ããããªãã ãããããã£ããæ¸ããããæ
å ±ã«ã¯æ©å¯æ
å ±ã¨ããã§ãªãæ
å ±ããããæ¬æ¥ã§ããã°ãæ©å¯ã§ã¯ãªãæ
å ±ãæä¾ããAPIãä¾ãã°ãåé½éåºçã®å¤©æ°äºå ±ãXMLãJSON ã§æä¾ããAPIãªã©ã¯ãã¯ãã¹ãã¡ã¤ã³å¶ç´ã«ãã°ãããã«ãã©ã¦ã¶ä¸ããå©ç¨åºæ¥ã¦ãããããã ãã»ãã¥ãªãã£ã®ããã«å©ä¾¿æ§ãããªãè½ã¨ãã¦ããã¨è¨ããã
ããããµã¼ãã¼ãæ©å¯æ
å ±ãæã£ã¦ããã®ããä»ã®ãµã¤ãä¸ã®JavaScriptããAPIãå©ãã¦ãããã®ãã©ããã¯ãå½ããåã§ã¯ãããããã®ãµã¼ãã¼èªä½ã宣è¨ãã¹ãã§ããæ
å ±ã§ãããããã®APIã¯ã©ããã使ã£ã¦ãããã§ããã¨ãã宣è¨ããµã¼ãã¼ä¸ã®ã©ããã«ããã°ããã®APIã«å¯¾ãã¦ã¯ã©ãããã¢ã¯ã»ã¹ãã¦ã大ä¸å¤«ãªã¯ãã ã
ããã®å®£è¨ã«ç¸å½ããä»çµã¿ãããã©ãã·ã¥ã§ã®crossdomain.xmlã§ãããXMLHttpRequest Level 2ãèªãAccess-Control-Allow-Originã§ããã
ãXMLHttpRequest Level 2ã§ã¯ãã¯ãã¹ãã¡ã¤ã³ãªãªã¯ã¨ã¹ããã¨ããããéä¿¡ãã¦ã¿ã¦ãè¿ã£ã¦ããHTTPãããã«Access-Control-Allow-Originãå«ã¾ãã¦ãããã©ãããè¦ããå«ã¾ãã¦ããããªããã¤å©ç¨å¯è½æ¡ä»¶ãä¸è´ããå ´åã«ã®ã¿ãJavaSciptã¯çµæãåãåããã¨ãã§ããã
ãæ¢ã«JSONPãããã®ã«ããããXMLHttpRequest Level 2ã使ãã®ã¯ãJSONPã«ã¯
- ãªã¯ã¨ã¹ãå ãå¶éãã確å®ãªæ¹æ³ããªã
- èªã¿è¾¼ãã JavaScriptããã©ã¦ã¶ä¸ã§å®è¡ãããã®ã§ãä¿¡ç¨ã§ããªããµã¤ãã®JSONPã¯èªã¿è¾¼ãã§ã¯ãããªã
ãã¨ãã£ãåé¡ç¹ãããããã§ãããXMLHttpRequest Level 2ãå®è£ ãããã©ã¦ã¶ã®ã¿ãé²è¦§ç°å¢ã¨ã§ãããããªãµã¤ãã§ãããªãã°ãJSONPãããXMLHttpRequest Level 2ã使ã£ãã»ããè¯ããFirefox 3.5, Google Chrome 2, IE 8(ããã¤ã ãã¯ã¡ãã£ã¨ä»æ§ãéããã©)以éã§ä½¿ããã