Home > Javascript > jQuery 1.2.3 にて JSONP 方式の $.getJSON() が動作しないバグについて

jQuery 1.2.3 にて JSONP 方式の $.getJSON() が動作しないバグについて

2008/02/07にリリースされたばかりの jQuery v1.2.3 をさっそく試してみたところ、偶然不具合を発見。$.getJSON() メソッドを以下のように、第二引数の parameter hash に callback を指定して実行すると、コールバック関数が一切呼ばれません:

$.getJSON( 'http://.../api', { callback: '?' }, function (){} );

一方、第一引数のURL文字列に callback 指定をする方式だと今までどおり問題なく動作する模様:

$.getJSON( 'http://.../api?callback=?', function (){} );

引数の書式で動作が異なるのでトリッキーすね。僕の環境 Windows x Mozilla Firefox 2.0.0.12 にてバグ確認できています。検証用のデモページはこちら

バグ解消版 jQuery 1.2.3 はこちら

リクルートWEBサービスなんてのを作って、JSONP利用を推進したい気満々な自分からしたら、このバグは痛いので慌てて jQuery コード読み漁ってなんとなく原因特定した次第。本家 jQuery な方々にはバグレポートを投げてみたので、そのうち解消される(といいな)はずですが、とりあえず今すぐ JSONP な v1.2.3 を使いたい方のために、僕の稚拙なコード修正を加えた解消版をここに晒しておきます。ご利用は自己責任で...

download jQuery 1.2.3 - with JSONP bug fix

ちなみに改修箇所はこれです(diff patch)

オマエそれ既出だっつーの、なんて本家 Resig さん達に突っ込まれたらかっこ悪いなあ...

既出でした(照

2008/02/20 追記

やっぱり既出でした。
http://dev.jquery.com/ticket/2020

$.getJSON() 第二引数の param hash に文字列として '?' が混在した際に、jQuery が勝手に jsonp callback だと認識してしまって困る!という事象が過去にあって、件の param hash を使った jsonp 指定は depricate (機能削除) したそうです。
なるほどー!

developer メーリングリストに一声かけずに、いきなり trac ticket 登録しちゃって恥ずかしすぎ orz

Comments:0

Comment Form

コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。

Remember personal info

Home > Javascript > jQuery 1.2.3 にて JSONP 方式の $.getJSON() が動作しないバグについて

Search
Feeds

Page Top