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