ブラウザのJavascriptからWeb APIを呼び出したいのだが、APIの提供先が、CORSに対応していないので、仕方なくJSONPで呼び出すことにした。(結構大手が提供しているサービスなのに・・・)
で、JSONPで動的なパラメータを使用(例えばMAP上で位置をクリックした場所の座標情報をパラメータと)して呼び出したいので調べたら、domにscriptタグを動的に追加するのが一般的なやり方のようだ。
しかし、イベント発生時にその都度追加して行くとどういう動作するか不安なので、作成するscriptタグは一つにしたい。
で、以下のようなコードを書いてみたら、うまく動きましたぜ。
var url = "https://・・・";
url += "&p1=" + param1;
url += "&p2=" + param2;
url += "&callback=callbackfunc";
// JSONPで呼び出すので、本体にscriptエレメントを追加してやる。
var scr = document.getElementById("JSONPScript");
if (scr != null) { // すでに存在すれば削除
document.body.removeChild(scr);
}
// 新たに追加
scr = document.createElement("script");
scr.id = 'JSONPScript';
scr.src = url;
document.body.appendChild(scr);
まぁ、JSONPはちょっと危険なのであまり使いたくは無いけど、PROXY使うと、遅くなるし、大手が提供しているAPIだから、まぁいいかなと・・・