jsonp con jquery [cerrado]


89

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

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/


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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.