楽天ウェブサービスとjQuery.getJsonで「Invalid label」と言われ、はまる

 getJsonで楽天のAPIをいろいろ。IEでは「”;”がありません」とか言われる。そんなエラーメッセージじゃわからんよ、ということでFirefoxのFireBugでチェック。「Invalid label」とか言われる。
 jQueryでJSONPをgetJsonするなんてことは初めてなので、わからないことばかり。1つ1つ調べていく。
 数時間たって結論。
 楽天からのレスポンスが間違っている!
 「callBack」パラメータを指定すればJSONPで返ってくるはずが、サーバー側でエラー(内部エラーとかいう文字列が入っている)の場合はそれが守られない。
 Statusが「Success」のときはJSONPなんだけど、「Sever Error」とかの場合はそうなってない。具体的にいうと、callBackで指定した文字列+カッコでくくられない状態で返ってくる。エラーのステータスを返すレスポンス自体が想定された形式になってないのだ。エラーメッセージの意味ねえ。
 スクリプトの問題かと思い、いろいろ調べてみたけど、レスポンスをしっかり見たらそうなっていることがわかった。レスポンスの見方もわかってなかったのも原因。
 とにかく、Statusで判断ができないとなると、この場合、エラー処理がえらく面倒。ここは楽天にがんばってもらうしかないようだ。
 まあ、初めてなのでこんなことにもなろうという話。メモ。

コメント