0

多くの人から寄せられた質問のほとんどを読みましたが、jQuery 1.8.X async: false のドキュメントで示唆されているように非推奨です。

ユースケース: ジオコードと q パラメータを使用して取得できる、場所のトピックのすべてのツイートを (twitter 検索 API を使用して) 取得したいと考えています。

しかし、Twitter api で提案されているように、API から 15 * 100 の結果が得られることがわかっているため、すべてのページを取得する必要があります。

CODE : ここにあります。http://pastebin.com/rgVDQFve

問題は、getTweets によって返されるオブジェクトの状態が 1 であるため、tweetsPerPage が定義されていないことですが、状態は 4 である必要があります。

私はjQuery 1.8.2を使用しています。変更しようとしましたが、効果はありませんでした。

誰でも何か提案できますか。

編集 :

function main() {
for(hindex=0; hindex<HASHTAGS.length; hindex++)  {
    for (cindex=0; cindex<COORDINATES.length;cindex++) {
        for (pindex=0; pindex<NUMBER_OF_PAGES; pindex++) {
            getTweets(HASHTAGS[hindex], COORDINATES[cindex][1], COORDINATES[cindex][2], pindex+1, function(tweets) {
                TWEETS = TWEETS.concat(tweets); /*basically I am getting all the tweets in this, I just need a way by which after executing all the getTweets along with their success functions and the callback I get the control to myself which will help me in using TWEETS*/
            });
        }
    }
}

}

    function  getTweets(hashtag, latitude, longitude, pageIndex, callback) {
    $.ajax({    
            url: 'http://search.twitter.com/search.json',
            cache: false, 
            dataType: 'jsonp',
            data: {
                    q: hashtag,
                    geocode: latitude + "," + longitude + "," + RADIUS,
                    page: pageIndex,
                    rpp: RESULTS_PER_PAGE,
                    result_type: RESULT_TYPE
            },
            success: function (data) {
                var results = data.results;
                var tweets = [];
                $(results).each(function(index, tweetJSON) {
                        var tweet = {
                            created_at: 'Dhruven' + " " + pageIndex + " " + (index+1)
                        };
                        var tweetObj = JSON.stringify(tweet);
                        tweets.push(tweetObj);  
                });
                callback(tweets);
            }
    });
  }
4

1 に答える 1

1

コメントで述べたように、jsonp リクエストは同期リクエストをサポートしていません。

しかし、コールバックを使用した非同期リクエストは機能しているようです。フィドルを参照してください:

http://jsfiddle.net/andreortigao/hAevy/

コード:

function getTweets(hashtag, latitude, longitude, pageIndex, callback) {
    $.ajax({    
            url: 'http://search.twitter.com/search.json',
            type:'GET',
            dataType: 'jsonp',
            data: {
                    q: hashtag,
                    geocode: latitude + "," + longitude + "," + '10mi',
                    page: pageIndex,
                    rpp: 10,
                    result_type: 'recent'
            },
            success: function (data, status, xmlHttp) {
                var results = data.results;
                var tweets = [];
                $(results).each(function(index, tweetJSON) {
                        var tweet = {
                            created_at: 'Dhruven' + " " + pageIndex + " " + (index+1)
                        };
                        var tweetObj = JSON.stringify(tweet);
                        tweets.push(tweetObj);  
                });
                callback(data.results);
            }
    });
}

電話:

getTweets("#facebook", 42.3580555555556, -71.0602777777778, 2, function(tweets){
 $("#log").text(JSON.stringify(tweets)); })
于 2012-10-08T18:18:21.827 に答える