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.