jQuery.getJSON()ã§å¥ãã¡ã¤ã³ã®JSONPãªãã¼ã¿ãèªã¿è¾¼ãæã®æ³¨æ
jQuery.getJSON(url, data, callback); $.getJSON(url, data, callback);
jQuery1.2以éã§ããã¤APIå´ã対å¿*1ãã¦ããã°ã§ãããjQuery.getJSON() ã§å¥ãã¡ã¤ã³ã«ããJSONPãã¼ã¿ãèªã¿è¾¼ãã¾ãã
JSONPãè¿ãAPIã¨ããã®ã¯ãã©ããã«ä»æ§ãããã®ãæé»ã®ç¿æ
£ãªã®ãã¯ç¥ããªããã©ãAPIã®URIã« callback=foo*2 ã¨ãã£ã弿°ãä»ããäºã«ãªãã¾ãã
jQuery.getJSON() ã§ãcallback=? ãã¤ããã¨èª¬æããè¨äºãã¡ãã»ãããã¾ãããã¡ãã£ã¨èª¤è§£ããããæ°ããã¾ãã
èªåã¯åéããã¾ããã
$.getJSON('http://search.twitter.com/search.json?callback=?', { q: "#jquery" }, function(data, status){ $.each(data.results, function(i, item){ console.log(item.text); }); } );
Twitter Search APIãä¾ã«ããã³ã¼ãã§ãã
jQuery.getJSON() ã§ JSONPãèªã¿è¾¼ãã«ã¯ãURIã« callback=? ãä»ãã¾ãã
ããã§éè¦ãªã®ã¯ ? ã§ãã
ãã® ? ã¯ãSQLã®ãã¬ã¼ã¹ãã«ãã¼ã¿ãããªãã®ã§ããã®ã¾ã¾ ? ãæ¸ããªãã¨ããã¾ããã
解説è¨äºã§ãã¾ãæ·±ã触ãã¦ãªãã¨ãããçµæ§ãã£ã¦ãæåã¯èªåã§ã³ã¼ã«ããã¯é¢æ°åãæå®ã§ããã®ãã¨æãã¾ããããããã¯åéãã§ããã
jQuery.getJSON() ã§JSONPãèªã¿è¾¼ããã¨ããã¨ãcallback=? 㯠callback=jsonp1272137974675 ã®æ§ãªã³ã¼ã«ããã¯é¢æ°åã«ç½®ãæãããã¾ãã
ããã¦jsonp1272137974675() ãå¼ã°ãã¦JSONãã¼ã¿ããjQuery.getJSON()ã®ç¬¬3弿°ã§ããã³ã¼ã«ããã¯é¢æ°*3ã«å¼æ°ã§æ¸¡ããã¾ãã
Same-Originããªã·ã¼
åããã¡ã¤ã³ã®ãã¼ã¿ã«ããã¢ã¯ã»ã¹ã§ããªãã¨ããããªã·ã¼ã
ããããããããJSONã¯JSONPã¨ããå½¢ã§èªã¿è¾¼ãå¿
è¦ãããã¾ãã
Exception: uncaught exception: [Exception... "Access to restricted URI denied" code: "1012"
Firefoxã§å¥ãã¡ã¤ã³ã®JSONãããã®ã¾ã¾èªã¿è¾¼ããã¨ããã¨ããã®æ§ãªä¾å¤ãçºçãã¾ãã
弿°ã®æ¸ãæ¹ãå¤ãã¦ã¿ã¦ã©ããªãã
éãä¾
$.getJSON('http://search.twitter.com/search.json?callback=?&q=%23jquery', function(data, status){ $.each(data.results, function(i, item){ console.log(item.text); }); } );
éããªãä¾
$.getJSON('http://search.twitter.com/search.json', { callback: "?", q: "#jquery" }, function(data, status){ $.each(data.results, function(i, item){ console.log(item.text); }); } );
*1:JSONPã«å¯¾å¿ãã¦ããAPIãªãã¨ããæå³ã
*2:追è¨ï¼ã³ã¡ã³ãã§ã触ãããã©ãFlickrã¯jsoncallback=fooã ã£ãããã¾ããcallbackã£ã¦ã¨ãããå¤ããã©ãéãã®ã«ãã¦ãAPIãããæãã
*3:ç´ãããããã©ãJSONPã® callback=? ã¨ã¯å¥ã®ãjQuery.getJSON()ã®ç¬¬3弿°ã®ã³ã¼ã«ããã¯é¢æ°