jsonp con jquery [chiuso]


Risposte:


144

Ecco un esempio funzionante:

<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>

Notare il ?callback=?alla fine dell'URL richiesto. Ciò indica alla getJSONfunzione che vogliamo utilizzare JSONP. Rimuovilo e verrà utilizzata una richiesta JSON vaniglia. Che fallirà a causa della stessa politica di origine .

Puoi trovare ulteriori informazioni ed esempi sul sito JQuery: http://api.jquery.com/jQuery.getJSON/


2
Stavo provando $ .ajax con quei parametri jsonp e non sono riuscito a farlo funzionare. Comunque, funziona bene, grazie.
akula1001

2
Fa il ?callback=?ottenere effettivamente inviato come parte dell'URL o è solo una sorta di flag che jQuery vede e le si spoglia prima di andare a prendere l'URL?
Hippietrail

1
Cosa è necessario se il tuo URL richiede parametri? (es: ?p=1&s=50)
ONDEV

2
Ho trovato questo un buon riferimento come punto di partenza. Per rispondere sopra: Sì, il callback viene inviato come parametro e deve essere restituito come una funzione avvolta attorno alla risposta JSON. Vedi stackoverflow.com/questions/7936610/… . Per inviare parametri aggiuntivi vengono inviati nel secondo parametro di getJSON (), nell'esempio sopra. sostituire null con {p: 1, s: 50}
Ecropolis

Ottengo il codice di errore 410 - andato. Esiste un servizio "eternamente" presente che restituisce JSON da qualche parte? Solo così si può verificare che il proprio metodo funzioni?
Konrad Viltersten
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.