jsonp con jquery [cerrado]

89

¿Puede dar un ejemplo muy simple de leer una solicitud jsonp con jquery? Simplemente no puedo hacer que funcione.

akula1001
fuente

Respuestas:

144

Aquí está un ejemplo de trabajo:

<html><head><title>Twitter 2.0</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</head><body>
<div id='tweet-list'></div>
<script type="text/javascript">
$(document).ready(function() {
    var url =  "http://api.twitter.com/1/statuses/user_timeline/codinghorror.json";
    $.getJSON(url + "?callback=?", null, function(tweets) {
        for(i in tweets) {
            tweet = tweets[i];
            $("#tweet-list").append(tweet.text + "<hr />");
        }
    });
});
</script>
</body></html>

Observe el ?callback=?al final de la URL solicitada. Eso indica a la getJSONfunción que queremos usar JSONP. Elimínelo y se utilizará una solicitud JSON de vainilla. Que fallará debido a la misma política de origen .

Puede encontrar más información y ejemplos en el sitio de JQuery: http://api.jquery.com/jQuery.getJSON/

Tomás Sedovic
fuente
2
Estaba probando $ .ajax con esos parámetros jsonp y no pude hacer que eso funcionara. De todos modos, esto funciona muy bien, gracias.
akula1001
2
¿ ?callback=?Realmente se envía como parte de la URL o es solo una especie de bandera que jQuery ve y se quita antes de obtener la URL?
hippietrail
1
¿Qué es necesario si su URL requiere parámetros? (por ejemplo: ?p=1&s=50)
ONDEV
2
Encontré que esto es una buena referencia como punto de partida. Para responder arriba: Sí, la devolución de llamada se envía como un parámetro y debe enviarse como una función envuelta alrededor de la respuesta JSON. Consulte stackoverflow.com/questions/7936610/… . Para enviar parámetros adicionales se envían en el segundo parámetro de getJSON (), en el anterior ej. reemplazar null con {p: 1, s: 50}
Ecropolis
Recibo el código de error 410, desaparecido. ¿Existe un servicio "eternamente" presente que devuelva JSON en algún lugar? ¿Solo para poder probar que el propio método funciona?
Konrad Viltersten