1

次のコードを書きました。

function shareCount(url){
    var count;
    $.ajax({
        type: "GET",
        url: "http://api.facebook.com/method/fql.query?query=SELECT+share_count+FROM+link_stat+WHERE+url%3D%22http%3A%2F%2F9gag.com%2Fgag%2F"+encodeURIComponent(url)+"%22",
        dataType: "xml",
        success: function(xml) {
                alert($(xml).find('share_count').text());
                return $(xml).find('share_count').text();
        }
    });
    //alert(count);
}

share_count特定のリンクを取得するために facebook に fql クエリを送信するだけです。リンクは問題alert($(xml).find('share_count').text());なく動作しますが、カウントを返すと、他の関数は var が未定義であると言います! alert()最後のスコープのコメントを外すと、同じことが起こります。

これは、この関数にリクエストを送信する他の関数の一部です(関連するかどうかはわかりません)

g.innerHTML = h("#template", {
                id: c.images[a].id,
                title: c.images[a].title,
                image: c.images[a].image.small,
                time: c.images[a].time,
                votes: c.images[a].votes,
                url: c.images[a].url,
                shareCount: shareCount(c.images[a].id)
            });
4

1 に答える 1

3

アラートは ajax が完了する前に実行されます。

独自の ajax メソッドを使用して fb データを取得する理由 グラフ apiを使用しないのはなぜですか。以下のようなものでそれを行う必要があります

FB.api({
    method: 'fql.query',
    query: 'SELECT share_count FROM link_stat WHERE url = "http://9gag.com/gag/"'
}, function (data) {
    alert(data[0].share_count);
    //    do the rest here
});

デモ

お役に立てれば

于 2012-05-18T04:13:25.617 に答える