Bonjour à tous,

Je viens ici pour vous demander comment fonctionne la fonction getJSON de Jquery à cette page: jQuery.getJSON() | jQuery API Documentation

Car j'ai essayé avec cette adresse ci et ça ne fonctionne pas, il ne comprend pas mon adresse JSON (vérifié ici: JSONLint)

Ici mon test pour voir si la fonction getJSON fonctionnait:
http://jsbin.com/ifevic/1/edit (n'ayez pas peur des 4 mots d'erreurs) [cligne]

Merci d'avance Cl9m9n7

7 réponses


Maenhyr
Réponse acceptée

La doc jQuery est vraiment très bien faite et très complète. J'ai tout simplement utilisé cet exemple :

// code exécuté au chargement de la page, similaire à $(document).ready(function(){ }); ou $.ready(function(){}
// l'avantage de jQuery(function($) {}); c'est qu'il n'y a pas de conflit avec le signe $. Il peut être utilisé par d'autres librairies.
jQuery(function($) {
    // la requete $.getJSON envoie une requête Get et retourne le résultat en JSON
    // equivalent à $.get("test.js", function(data) {}, 'json');
    $.getJSON(
        "monfichier.php" // le fichier appelé
        // la fonction appelée si le status de la requête est 200 OK, en gros la requête a renvoyée une réponse (vide ou non)
        // ton test n'affichait rien car le statut de la requête 
        function(json) {
            // json est le résultat renvoyé par le fichier appelé.
            console.log(json);
        }
    );
});

Pour analyser le résultat de console.log, il te faut lancer la console. Pour l'avoir sur Chrome, il te faut aller dans Outils > Console JavaScript.

cl9m9n7
Auteur

Up s'il vous plait ;)

Quand je teste de mon côté, la console me renvoie ceci :

XMLHttpRequest cannot load https://itunes.apple.com/search?entity=movie&term=avatar. Origin http://jsbin.com is not allowed by Access-Control-Allow-Origin.

Ce n'est pas la requête $.getJSON qui pose problème mais plutôt JSbin et JSFiddle. J'ai testé avec un JSON personnel et je le récupérai bien.
Tu peux essayer ta requête depuis un site personnel, à mon avis iTunes ne te bloquera pas dessus.

EDIT :: il peut s'agir d'une API privée, auquel cas, même sur un site personnel tu auras la même erreur. Dans ce cas là, il va te falloir trouver un autre webservice (LastFM par exemple, ou Allociné pour les films).

cl9m9n7
Auteur

Merci beaucoup :)

Pourrais tu m'envoyer les code Jquery que tu as écris s'il te plait, il faut que je me familiarise avec ceux-ci car je débute à peine le js, je ne sais pas bien me servir de la console non plus mais ça va venir. ;)

Pour se qui est de l'API, c'est celle d'apple Api Apple Search (privée ?) ;)

Merci d'avance :)

cl9m9n7
Auteur

Merci beaucoup ;)
je vais regarder ton code mais es ce que le problème que j'ai ne viens pas du fait que ce soit du https et non du http car dans l'exemple de jquery(api.flickr) l'api était sous http et cela fonctionnait.

Mais si tu dit que toi tu arrives à récupérer quelque chose alors ça veux dire que c'est ok :)

Merci bien ^^

Je ne pense pas que le problème vient du https. Le problème vient du Cross domain. Pour outrepasser ça, il te faut modifier le type de résultat et ne pas utiliser json mais jsonp.

$.get("https://itunes.apple.com/search?entity=movie&term=avatar", function(data) {
  console.log(data);
}, 'jsonp');

http://en.wikipedia.org/wiki/JSONP

cl9m9n7
Auteur

Merci Beaucoup je vais tester ça ;)

Tu m'as bien débloqué ;)