2010-10-22 20 views
15

Necesito solicitar una búsqueda en twitter con jquery usando twitter api. Después de leer documentation escribo este código:twitter búsqueda api con error de jquery

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

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

search.json No se pudo cargar recursos> Cuando se ejecuta la página, Google Chrome muestre este error en la consola:

XMLHttpRequest no puede cargar http://search.twitter.com/search.json?callback=myFunction&q=stackoverflow. Origen http://localhost/twitter no es permitido por Access-Control-Allow-Origin. search.json Error al cargar el recurso

¿cuál es el problema?

Respuesta

30

tiene que escribir un poco diferente, como esto:

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

para desencadenar JSONP que está buscando explícitamente callback=?, que no se encuentra en su versión función llamada. Para utilizar la devolución de llamada con nombre, es mejor ir con la versión completa $.ajax():

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

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

funciona .... muchas gracias !!! – rizidoro

+0

@rizidoro - bienvenido :) –

+1

¡ojalá alguien lo documentara más correctamente, pasé una hora tratando de descubrir por qué recibí el acceso denegado! – Ayyash

3

sólo para añadir un poco más a la respuesta se puede utilizar el siguiente código para mostrar el texto dentro de cada tweet devuelto.

$.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 />"); 

} 
}); 

Luego, dentro de su html cuerpo ponga la siguiente div

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