Sto avendo qualche difficoltà a recuperare correttamente i dati di Twitter usando jsonp search.json.
Quando recupero i dati solo una volta, funziona perfettamente con questo pezzo di codice:
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]);
}
}
Ma quando provo quindi ad aggiornare questi dati ogni xx secondi, usando setInterval:
setInterval(function () { getTweets(); }, 1000*interval_tourniquet);
Purtroppo non funziona. Sto avendo questo errore:
NOT_FOUND_ERR: DOM Eccezione 8: An si è tentato di fare riferimento a un nodo in un contesto in cui non esiste.
fondamentalmente, ho capito ogni volta che provo a chiamare la mia funzione getTweets () all'interno di un'altra funzione ... :(
Un'altra soluzione che ho provato:
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"
});
}
In questo modo funziona perfettamente con il mio jsonp api su un altro server, ma Twitter mi restituisce il mio callback due volte:
tw_callback (tw_callback ({risultati ...
E la stringa jsonp non è interpretata ..
Qualche idea su questo, qualche suggerimento?
Grazie mille!
risposte:
1 per risposta № 1Prova a riscrivere la tua funzione con il seguente, più semplice, modo.
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]);
}
}
});
}