2010-10-22 10 views
15

ho bisogno di richiedere una ricerca Twitter con jQuery utilizzando API di Twitter. Dopo leggere documentation scrivo questo codice:Twitter Search API con l'errore jQuery

$.getJSON("http://search.twitter.com/search.json?callback=myFunction&q=stackoverflow"); 

    function myFunction(r) { 
     console.log(r); 
    } 

search.json Impossibile caricare risorsa> Quando viene eseguito nella pagina, Google Chrome mostrare questo errore su Console:

XMLHttpRequest non può caricare http://search.twitter.com/search.json?callback=myFunction&q=stackoverflow. Origine http://localhost/twitter non è consentito dalla Access-Control-Allow-Origin. search.json Impossibile caricare la risorsa

qual è il problema?

risposta

30

Hai bisogno di scrivere un po 'diverso, in questo modo:

$.getJSON("http://search.twitter.com/search.json?callback=?&q=stackoverflow", 
    function (r) { 
    console.log(r); 
}); 

per innescare JSONP che sta cercando esplicitamentecallback=?, che non è nella vostra versione funzione denominata. Per utilizzare il callback di nome, è meglio andare con la versione completa $.ajax():

$.ajax({ 
    url: "http://search.twitter.com/search.json?q=stackoverflow", 
    dataType: "jsonp", 
    jsonpCallback: "myFunction" 
}); 

function myFunction(r) { console.log(r); } 
+0

funziona .... grazie mille !!! – rizidoro

+0

@rizidoro - benvenuto :) –

+1

Vorrei che qualcuno documentare questo più propriamente, ho passato un'ora a cercare di capire il motivo per cui im ​​ottenendo l'accesso negato! – Ayyash

3

solo per aggiungere un po 'di più per la risposta è possibile utilizzare il seguente codice per visualizzare il testo all'interno di ogni tweet restituito.

$.getJSON("http://search.twitter.com/search.json?callback=?&q=stackoverflow", 

function(data){ 

for (i=0; i<data.results.length; i++){ 

$("#tweets").append("<p><strong>Text: </strong>" + data.results[i].text + "<BR/>" + "<p><strong>Created at: </strong>" + data.results[i].created_at +"</p><br /><br />"); 

} 
}); 

Poi all'interno del vostro corpo html inserire il seguente div

<div id="tweets"></div>