Javascriptでajaxを使った場合同一ホストにしか接続できない。jsonpは他のホストにも接続する技術。
JavascriptでJavascriptを埋め込んで、そのsrc属性に他のホストをを指定する。このときURLにcallback=関数名などとすれば、サーバ側で対応してれば本来返すjsonをその関数名で括ったものを返すので、javascript埋め込みはその関数の実行になり、その関数の引数はjsonオブジェクトになる。
普通のjson要求、以下を送るとjsonが帰ってくる。
http://api.twitter.com/1/statuses/public_timeline.json?count=3&include_entities=true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[ { "contributors": null, "coordinates": null, "created_at": "Fri Aug 12 02:54:12 +0000 2011", "entities": { "hashtags": [], ... ... "utc_offset": 32400, "verified": false } } ] |
これにcallback=mycallbackをつけるとjavascriptが帰ってくる。
http://api.twitter.com/1/statuses/public_timeline.json?callback=mycallback&count=3&include_entities=true
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
mycallback([ { "contributors": null, "coordinates": null, "created_at": "Fri Aug 12 02:54:12 +0000 2011", "entities": { "hashtags": [], ... ... "utc_offset": 32400, "verified": false } } ] ); |
あらかじめmycallbackを定義してからこのjsonpを実行すれば、呼ばれることになって、その引数がjavascriptオブジェクトになる。ただし404などが帰ってくると、エラー処理できないか。