1

以下のコードを参照してください。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

4

1 に答える 1

2

問題の回避策があります。URL呼び出しを次のように変更してください。

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

Twitterのドキュメントから

suppress_response_codes:このパラメーターが存在する場合、すべての応答は200OKステータスコードで返されます。エラーも含まれます。このパラメーターは、200以外のすべての応答をインターセプトするブラウザーで実行されているFlashおよびJavaScriptアプリケーションに対応するために存在します。使用する場合、応答本文を解析することによってエラー状態を判別するのはクライアントの仕事です。これらのエラーメッセージは変更される可能性があるため、注意して使用してください。

于 2012-04-16T21:41:22.960 に答える