JSONScriptRequest-0.02[Ajax][JSON][API]
参考:JSONScriptRequest.js:XMLHttpRequestの代わりに<script>を使って通信するライブラリ
参考:JSONScriptRequest.js:XMLHttpRequestの代わりにscript要素を使って通信するライブラリ
XMLHttpRequestのようにJSONP(Remote JSON)APIの呼び出しを行なうJSONScriptRequest-0.02をJSANにアップしました。
0.02ではThe XMLHttpRequest Objectをそれなりに実装してみました。バグレポート・パッチ大歓迎です。
0.01はIEで動かなかった(←オ㍗ル)と思いますが、0.02では動くはずです。(0.02はまだ上がってませんが数時間後には上がると思います。上がったらここでお知らせします)
ここで色々やりたいんですけど、HatenaDiaryはJavaScript使えないんですよね。残念。
SYNOPSISとして、はてなブックマークエントリー情報取得APIを実際に使用してみました。このままHTMLとして保存してブラウザで見れば実際に動きます。(もちろんIEでも動きます^^;)
<html> <head> <script type="text/javascript" src="http://www.openjsan.org/src/y/yo/yoshida/JSONScriptRequest-0.02/lib/JSONScriptRequest.js"></script> <script type="text/javascript"> window.onload = function() { var url = 'http://d.hatena.ne.jp/holidays-l/20061002/p1'; var req = new JSONScriptRequest(); req.open('GET', 'http://b.hatena.ne.jp/entry/json/?url=' + encodeURIComponent(url)); req.onreadystatechange = function() { if (this.readyState == 4) { var debug_info = document.createTextNode(JSONScriptRequest._toSource(this.responseJSON)); document.body.appendChild(debug_info); } }; req.send(); } </script> </head> <body> </body> </html>
結果は
({count:"6", url:"http://d.hatena.ne.jp/holidays-l/20061002/p1", bookmarks:[{timestamp:"2006/10/21 22:43:19", comment:"", user:"qptaro", tags:["javascript", "ajax", "json", "jsonp"]}, {timestamp:"2006/10/21 18:29:35", comment:"", user:"hamasta", tags:["JavaScript", "JavaScript-JSON"]}, {timestamp:"2006/10/21 13:43:34", comment:"", user:"ziguzagu", tags:["javascript"]}, {timestamp:"2006/10/21 01:41:04", comment:"JSONP、スクリプトエレメント埋め込みにより通信、XMLHttpRequest/XHRのインターフェースを利用(同名メソッド)、jsonapi?cb=JSONScriptRequest._dispatchers[0]", user:"brazil", tags:["4", "JAVASCRIPT"]}, {timestamp:"2006/10/09 17:07:02", comment:"", user:"lieutar", tags:["javascript"]}, {timestamp:"2006/10/02 14:03:22", comment:"", user:"higeorange", tags:["ajax", "javascript", "json", "jsonp"]}], title:"holidays-l - JSONScriptRequest.js:XMLHttpRequestの代わりにscript要素を使って通信するライブラリ", eid:"2905229", entry_url:"http://b.hatena.ne.jp/entry/http://d.hatena.ne.jp/holidays-l/20061002/p1", screenshot:"http://screenshot.hatena.ne.jp/images/120x90/b/6/e/1/e/ce94a2a978a7498681f34af9fefc81a6f2a.jpg"})
のようになると思います。