jQueryのドキュメントには、$。getJSONを使用してJSONPをリクエストする次の例がリストされています。
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?",
function(data) {
$.each(data.items, function(i,item) {
$("<img/>").attr("src", item.media.m).appendTo("#images");
if (i == 3) return false;
});
});
このパラメーターのために動的コールバック関数名を生成するこのメソッドを使用するのではなく、次のようにします。
jsoncallback=?
これを事前にハードコードされた関数名に設定できるようにしたいのですが、次のようになります。
jsoncallback=test
これは、スクリプトを実行し、返されるJSONPのJSONオブジェクトがtest()の呼び出しでラップされているという意味で機能します。
ただし、コールバック関数の設定方法がわかりません。これほど簡単ではないでしょうか。
function test(data) {
console.log(data);
}
$.getJSON("http://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=test");
それを試してみると、test()でラップされたJSONPが返されますが、定義した関数test()が呼び出されることはありません。私は何かが足りないのですか?
助けてくれてありがとう!