jsonp avec jquery [fermé]


89

Pouvez-vous donner un exemple très simple de lecture d'une requête jsonp avec jquery? Je ne peux tout simplement pas le faire fonctionner.

Réponses:


144

Voici un exemple de travail:

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

Notez le ?callback=?à la fin de l'URL demandée. Cela indique à la getJSONfonction que nous voulons utiliser JSONP. Supprimez-le et une requête JSON vanille sera utilisée. Ce qui échouera en raison de la même politique d'origine .

Vous pouvez trouver plus d'informations et d'exemples sur le site JQuery: http://api.jquery.com/jQuery.getJSON/


2
J'essayais $ .ajax avec ces paramètres jsonp et je n'ai pas pu le faire fonctionner. Quoi qu'il en soit, cela fonctionne bien, merci.
akula1001

2
Est-ce que le est ?callback=?réellement envoyé dans le cadre de l'URL ou est-ce juste une sorte d'indicateur que jQuery voit et les supprime avant de récupérer l'URL?
hippietrail

1
Que faut-il si votre URL requiert des paramètres? (ex: ?p=1&s=50)
ONDEV

2
J'ai trouvé que c'était une bonne référence comme point de départ. Pour répondre ci-dessus: Oui, le rappel est envoyé en tant que paramètre et doit être renvoyé en tant que fonction encapsulée autour de la réponse JSON. Voir stackoverflow.com/questions/7936610/… . Pour envoyer des paramètres supplémentaires, ils sont envoyés dans le deuxième paramètre de getJSON (), dans l'exemple ci-dessus. remplacer null par {p: 1, s: 50}
Ecropolis

J'obtiens le code d'erreur 410 - parti. Existe-t-il un service "éternellement" qui renvoie JSON quelque part? Juste pour pouvoir tester que la propre méthode fonctionne?
Konrad Viltersten
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.