人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Greasemonkeyのスクリプトで、

function callback(data) { ... }
(function() {
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = 'http://foo.com/bar.json?callback=callback';
document.body.appendChild(script);
})();

のように書いたのですが、呼び出したJSONP側で
「callback is not defined」とエラーが出てしまいます。

なぜこの場合、JSONP側で関数callbackを参照できないのでしょうか。
原因のわかる方がいらっしゃいましたら教えてください。

(ChromeとFirefox3.6で試しましたがいずれも同じエラーが出ました。
ちなみに呼び出しているのははてなのマイブックマーク全文検索APIで、
これはcallbackを指定したJSONPでのデータ取得をサポートしています。)

●質問者: Cside
●カテゴリ:インターネット ウェブ制作
✍キーワード:BODY chrome Greasemonkey JavaScript JSONP
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Cherenkov
●60ポイント ベストアンサー

GM_xmlhttpRequestを使ってJSONを取得すればよいのではないでしょうか。

// 例
GM_xmlhttpRequest({
 method: "get",
 url: "http://b.hatena.ne.jp/ユーザーid/search/json",
 data: "q=greasemonkey",
 onload: function(res) {
 console.log(JSON.parse(res.responseText))
 }
});

そもそもJSONPはドメインを越えられないXHRの代替品なのだから、ドメインの制約を受けないGM_XHRがあるんだからはじめからGM_XHRで読み込んで…

Greasemonkeyで定義した関数をJSONPで呼び出したい - ロックスターになりたい


JSONPでやりたい場合は、function callbackの部分もdocument.body.appendChildすればよさそうです。

Greasemonkey で JSONP の Callback 関数を呼び出す方法 - sukechan.net


2 ●
●10ポイント

どこか間違っているかもしれないのでもういちど確認してみて下さい。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ