以下のコードを参照してください。TwitterAPI呼び出しによって返されるエラーを処理しようとしています。Jqueryはjsonpデータ型を処理しないため、タイムアウトになることを忘れないでください。以下のコードは、存在しないTwitterIDに対して明らかにエラーをスローします。req.errorメソッドでそのエラーをキャッチし、ユーザーに表示したいと思います。しかし、どうやら、エラーは隠されており、console.log('Oh noes!' + msg.error);に表示されます。これは確かに、jsonpタイプのデータを処理するjqueryと関係があります。誰かが同じことに遭遇しましたか?解決策はありますか?
function findUserInfo(){
var req = $.ajax({
url: "https://twitter.com/users/show.json?id=neverexistID",
dataType : "jsonp",
timeout : 10000
});
req.success(function(msg) {
console.log('Yes! Success!'+msg);
});
req.error(function(msg) {
console.log('Oh noes!'+msg.error);
});
}
回答:jsonp呼び出しは特殊であり、スローされるエラーは通常非表示になっています。そのため、エラーの状況を処理できませんでした。以下のプラグインは状況を適切に処理し、問題を解決しました。
jsonpプラグインcode.google.com/p/jquery-jsonp