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.

akula1001
la source

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/

Tomas Sedovic
la source
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