Проблема с поисковым запросом jQuery JSONP в твиттере - PullRequest
0 голосов
/ 10 марта 2011

У меня возникают некоторые трудности с правильным извлечением данных из Twitter с использованием jsonp search.json.

Когда я получаю данные только один раз, он прекрасно работает с этим фрагментом кода:

function getTweets(){
    $.ajax({
       url: 'http://search.twitter.com/search.json',
       type: 'GET',
       dataType: 'jsonp',
       jsonpCallback: 'tw_callback',
       data: 'q=<?php echo urlencode($twitter_search); ?>+-RT&rpp=100'
    });
}

function tw_callback(jsonp){
    for( key in jsonp['results'] ) {    
        var tweet = jsonp['results'][key]['text'] ;
        var from = jsonp['results'][key]['from_user'];
        var avatar = jsonp['results'][key]['profile_image_url'];

        tw_container.push([tweet,from,avatar]);
    }
}

Но когда я пытаюсь обновлять эти данные каждые XX секунд, используя setInterval:

setInterval(function () { getTweets(); }, 1000*interval_tourniquet);

К сожалению, это не работает. У меня эта ошибка:

NOT_FOUND_ERR: DOM Exception 8: An была сделана попытка сослаться на узел в контексте, где он не существует.

По сути, я получаю это каждый раз, когда пытаюсь вызвать функцию getTweets () внутри другой функции ...: (

Другое решение, которое я пробовал:

function getTweets(){
    $.ajax({
        url: 'http://search.twitter.com/search.json',
        type: 'GET',
        dataType: 'jsonp',
        data: 'callback=tw_callback&q=<?php echo urlencode($twitter_search); ?>+-RT&rpp=100'
    });
}

Таким образом, он отлично работает с моим собственным jsonp api на другом сервере, но Twitter дважды возвращает мне мой обратный вызов:

tw_callback (tw_callback ({результаты ...

И строка jsonp не интерпретируется ..

Есть подсказка, подсказка?

Большое спасибо!

1 Ответ

1 голос
/ 20 марта 2011

Попробуйте переписать вашу функцию следующим, более простым способом.

function getTweets(){
    $.ajax({
       url: 'http://search.twitter.com/search.json?q=<?php echo urlencode($twitter_search); ?>&rpp=100&callback=?',
       dataType: 'jsonp',
       success: function(){ 

            for( key in jsonp['results'] ) {    
                var tweet = jsonp['results'][key]['text'] ;
                var from = jsonp['results'][key]['from_user'];
                var avatar = jsonp['results'][key]['profile_image_url'];

                tw_container.push([tweet,from,avatar]);
            }
        }
    });
}
...