2


0

$(document).ready(function(){$( 'form#search')。bind( "送信"、function(e){e.preventDefault(); $( '#content')。html( '') ;

// Define the callback function
関数getGeo(jsonData){$( '#content')。append( '' jsonData.rank ''); bObj.removeScriptTag(); }

// The web service call
var req = 'http://twittercounter.com/api/?username=Anand_Dasgupta

// Create a new request object
bObj = new JSONscriptRequest(req);

// Build the dynamic script tag
bObj.buildScriptTag();

// Add the script tag to the page
bObj.addScriptTag();

;)); ;));

クロスドメインJSONリクエストを使用して、次のようなJSONデータを取得します。

{"user_id": "3190399"、 "user_name": "Anand_Dasgupta"、 "followers_current": "86"、 "date_updated": "2009-06-04"、 "url": ""、 "アバター": "205659924 \ /DSC09920_normal.JPG "、" follow_days ":" 0 "、" started_followers ":" 86 "、" growth_since ":0、" average_growth ":" 0 "、"明日 ":" 86 "、" next_month ":" 86 "、" followers_yesterday ":" 86 "、"ランク ":176184、" followers_2w_ago ":null、" growth_since_2w ":86、" average_growth_2w ":" 6 "、" tomorrow_2w ":" 92 "、" next_month_2w ":" 266 "、" followersperdate ":[]}

URLからJSONデータを取得するim

しかし、このコードはうまくいかないようです。 誰かがどういうわけかコードを磨くか、または何らかの応答を提供することができればそれは大歓迎です。 ありがとうございました

2 Answer


2


ここで推測しただけですが、jsonpコールバックがトリガーされたときにgetGeo関数が範囲外になっている可能性がありますか? getGeo関数を$(document).ready()ブロックから移動してみませんか?

編集:あるいは、あなたはすでにjQueryを使っていますね。 jQueryはあなたのためにクロスドメインのものをするでしょう!

$(document).ready(function(){$ .getJSON( 'http://twittercounter.com/api/?username=Anand_Dasgupta


2


Stoborは正しい方向に進んでいます。 私はあなたが明らかに使用したクラスとハウツー情報と共にページを訪問しました:http://www.xml.com/pub/a/2005/12/21/json-dynamic-script-tag.html このスクリプトでは、YahooがJSONデータをラップするコールバック関数を指定するために使用するcallback =値を利用しています(つまり、JSON P データになります)。 あなたのURLにはcallback = getGeoがありますが、http://twittercounter.com/pages/api [TwitterCounter API]にはコールバック関数を指定する方法がありません*。 私はあなたが使っていたコードを使って完全なHTMLページを作成しました:

    Twittercounter API Test



    var bObj;

    // Define the callback function
    function getGeo(jsonData) {
     $('#content').append(''+jsonData.rank+'');
     bObj.removeScriptTag();
    }

    $(document).ready(function() {
        $('form#search').bind("submit", function(e){
                e.preventDefault();
                $('#content').html('');
                // The web service call
                var req  = 'http://twittercounter.com/api/?username=Anand_Dasgupta&output=json&results=3&callback=getGeo';

                // Create a new request object
                bObj = new JSONscriptRequest(req);

                // Build the dynamic script tag
                bObj.buildScriptTag();

                // Add the script tag to the page
                bObj.addScriptTag();
        });
    });

ボタンをアクティブにしたときにFirebugからエラーが発生しました。 その理由は、元の記事の記事のこの段落に基づいています。

_ これは有効なJavaScriptステートメントであるため、JavaScriptを返すスクリプトタグのターゲットになる可能性があります(コールバック関数のない生のJSONデータは有効なJavaScriptステートメントではないため、スクリプトのターゲットである場合は読み込みに失敗します)タグ)。 比較のために、この呼び出しのXMLバージョンをここで見てください。 _

「有効なJavaScriptステートメント」は、実際のデータをラップする関数名を持つものです。

TwittercounterがJSONPリクエストを許可してラッパー関数を指定できるのであれば、Stoborのソリューションは完璧だろう。 そのままでは、仲介者として機能するには独自のプロキシを作成する必要があります。 http://www.carolinamantis.com/wordpress/?p=29 [私のブログでPHPを使用して作成する方法]に例があります。