jQueryのajax APIではjsonp通信の面倒ごとを全て抽象化してくれていて、使い捨てのcallback関数もタイムスタンプを付与して衝突しないように巧く処理してくれるのですが、最近のバージョン(1.5以降)はやたらと関数名が長い。
ので、callback関数名を昔の挙動に戻したい場合は、jQuery本体を読み込んだ後に、次のようにします。
(function() {
var jsc = $.now(),
prefix = "jsonp";
// jsonpCallbackに昔のcallback関数名生成ルールを渡す
$.ajaxSetup({
"jsonp": "callback",
"jsonpCallback": function() {
return (prefix + jsc++);
}
});
})();
なんで戻したかったかというと、パラメータcallbackに指定する文字列が長過ぎるとリクエストを弾くWeb APIがあったから。
クライアント側からしたら「そんなエラー処理すんなよ」って話でもあるのですが、ブラウザやサーバの実装にHTTP GETメソッドのURI長さ制限が存在する以上、Web API側がcallbackにも長さの制限を設ける設計には、一定の妥当性はあります。
最近のツッコミ
参号館
日記(ariyasacca)