Home > ブログ > Movable Typeで最新の投稿をJSONPで返す方法

Movable Typeで最新の投稿をJSONPで返す方法

例えば他のドメインから自分のブログの最新記事を取得したい場合に使える方法だと思います。
今回hisasann.comを作っていて、このブログの最新記事を取得するにはどうやるんだろうと思って試してみました。

本来ドメインが一緒なので普通にAjaxで取得すれば良いのでしょうが、たいていhtmlファイルの制作はローカルで行うと思います。
このローカルにあるhtmlファイルからAjaxを使うとなると、JSONPで取得しておけば特に問題なく動くので便利かと。
普通にXMLHttpRequestだとクロスドメインの問題が出てきちゃいますもんね。

JSONPを返すためのページを作る

ボクはまだMTは3.35を使っているので、4以降のバージョンの方とは画面が少し違うかもしれません。

まずはテンプレート画面でテンプレートを新規作成リンクをクリックします。
Movable Type Publishing Platform

テンプレート名: ここは適当に
出力ファイル名: のちのちここのファイル名に対してアクセスするのでそれっぽく。たとえばentry_jsonp.htmlとかね

テンプレート内容のところに、

と書いて、htmlプロパティを持つハッシュ(連想配列)を作って、それを引数に取るjsoncallback関数を呼ぶように記述します。
MTEntriesタグのlastn属性は件数になるので、上の状態だと10件になります。

jQueryのgetJSONを使って取得してみる

callback=?とGETパラメータを渡していますが、これをするとgetJSONの中でJSONPへのアクセスだということになりscriptタグを生成してくれます。
そのときにcallback=?の?の部分に「jsonp1237786446434」のようにjsonp+現在時刻のようなfunction名を付けて、サーバーから帰ってきたときにcallback関数が呼び出されるようにしています。
ただし今回サーバーから送られてくるデータにはjsoncallbackという関数を呼び出すようになっているので、getJSONの第2引数は呼び出されません。
(MTのページでGETパラメータを取得する方法があるのなら、ちゃんと関数名を取得できるんですが方法が分かりませんw)

なので呼び出されるのはあくまでもレスポンスで返ってくるjsoncallback関数になります。

実際のURLはこんな感じ。

http://hoge.com/recent_entries.html?callback=jsonp1237786446434&_=1237786447501

今回MTからのJSONP取得をMTで作るページからやってみましたが、もっと良い方法があるかもしれません。
実際に1つactionを作って、そこからJSONPを返すのも勉強になりそうです。
ただしPerlを使えなければなりませんが・・・w

■参考リンク
[鏡] 入門 JSON 3 -- JSONP とコールバック関数 -- 戯れ言++

Trackback:0

TrackBack URL for this entry
http://hisasann.com/cgi-bin/mt/mt-tb.cgi/1165
Listed below are links to weblogs that reference
Movable Typeで最新の投稿をJSONPで返す方法 from HouseTect, JavaScriptな情報をあなたに

Home > ブログ > Movable Typeで最新の投稿をJSONPで返す方法

Tag cloud
月別アーカイブ
Powered by
Powered by
Movable Type Commercial 4.261

Page Top