Mam problemy z prawidłowym pobraniem danych z serwisu Twitter za pomocĘ ... jsonp search.json.
Kiedy pobierasz dane tylko raz, działa to doskonale z tym fragmentem kodu:
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]);
}
}
Ale kiedy próbuję następnie odświeżyć te dane co xx sekund, używając setInterval:
setInterval(function () { getTweets(); }, 1000*interval_tourniquet);
To niestety nie działa. Mam ten błąd:
NOT_FOUND_ERR: DOM Exception 8: An podjęto próbę odniesienia się do węzła w kontekście, w którym nie istnieje.
zasadniczo, mam to za każdym razem, gdy próbuję wywołać moją funkcję getTweets () wewnątrz innej funkcji ... :(
Inne rozwiązanie, które wypróbowałem:
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"
});
}
W ten sposób działa on idealnie z moim własnym apletem jsonp na innym serwerze, ale Twitter zwraca mi dwukrotnie moje wywołanie zwrotne:
tw_callback (tw_callback ({wyniki ...
A ciąg jsonp nie jest interpretowany ...
Jakaś wskazówka na ten temat, jakaś podpowiedź?
Wielkie dzięki!
Odpowiedzi:
1 dla odpowiedzi № 1Spróbuj przepisać swoją funkcję w następujący, bardziej prosty sposób.
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]);
}
}
});
}