2012-04-16 12 views
1

以下のコードを参照してください。私はtwitter API呼び出しによって返されるエラーを処理しようとしています。 Jqueryがjsonpのデータ型を処理しないため、タイムアウトが発生することを覚えておいてください。以下のコードは、明らかに存在しないtwitter IDに対してエラーを投げます。私はreq.errorメソッドでそのエラーを捕捉し、それをユーザに表示したいと思う。しかし、明らかに、エラーは隠され、console.log( 'Oh noes!' + msg.error)に来る。これはjsonery型のデータを処理するjqueryとは関係があります。誰かが同じことに遭遇しましたか?どんな解決策ですか?jqueryがtwitter API呼び出しからjsonpデータを正しく処理していない

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コールは特別で、私は、エラー状況を処理できなかった理由は通常隠されてスローされたエラー、およびthatsのは、以下のプラグインがうまく状況を処理し、私の問題を解決しました。

jsonp plugin code.google.com/p/jquery-jsonp

+0

JQueryがこれを処理していないようで、jsonpプラグインを使用して私の "エラー隠し"問題を解決しました。プラグインリンクはhttp://code.google.com/p/jquery-jsonpです。 – cherit

答えて

2

あなたの問題の回避策はあり、にあなたのURL呼び出しを変更:Twitterのdocumentation

から

url: "https://twitter.com/users/show.json?suppress_response_codes&id=neverexistID", 

suppress_response_codes:このパラメータが存在する場合、すべての応答 は200 OK statuで返されますsコード - エラーですらあります。この パラメータは、FlashおよびJavaScriptアプリケーションの がすべての非200応答をインターセプトするブラウザで動作するために存在します。使用されている場合、 クライアントのジョブは、 レスポンス本文を解析してエラー状態を判断します。これらのエラーメッセージは に変更される可能性があるため、慎重に使用してください。

関連する問題