Quelqu’un peut-il m’expliquer comment passer un appel JSONP comme si j’avais cinq ans?

J’ai déjà un object .json sur un serveur. Il est correct et ne contient aucune erreur de syntaxe (json valide). Je souhaite appeler cet object via JSONP car il réside sur un serveur différent de celui de mon application.

Je pense que je comprends comment y parvenir, mais je ne sais pas quoi faire en ce qui concerne la partie serveur. J’ai des erreurs tout le temps lorsque je suis les infos déjà sur le web. De l’aide?

JSONP est fondamentalement un “hack” permettant aux sites de charger des données et d’ignorer la politique de même origine . Cela fonctionne en ajoutant une à votre page.

La méthode de facto consiste à envoyer un rappel dans votre demande. Le serveur prend alors ce nom et génère un fichier JS qui appelle cette fonction avec les données.

Avec jQuery, vous pouvez passer un appel JSONP en ajoutant simplement ?callback=? à votre URL lorsque vous faites $.getJSON .

Exemple:

 $.getJSON('http://YourSite.com/path/to/json.php?callback=?', function(data){ console.log(data); // this will be parsed for you }); 

Ou, vous pouvez utiliser la méthode complète $.ajax :

 $.ajax({ url: 'http://YourSite.com/path/to/json.php', dataType: 'jsonp', // this tells jQuery to add "callback=?" for you success: function(data){ console.log(data); // this will be parsed for you } }); 

Au lieu de passer un appel AJAX, jQuery appenda en fait:

  

sur votre page (remarque: jQuery12345 sera généré aléatoirement).

Ensuite, sur votre serveur, vous devez répondre avec un fichier JavaScript valide. Il doit contenir un appel à la fonction de callback transmise dans la chaîne de requête. Quelque chose comme ça:

 jQuery12345({your: ['json', 'data']}); 

Un exemple en PHP (à adapter à n’importe quel langage côté serveur que vous utilisez) pourrait être:

 $array = ['a' => 1, 'b' => 2,'c' => 3]; $callback = $_GET['callback']; header('Content-type: text/javascript'); echo "{$callback}(".json_encode($array).");"; 

C'est tout ce qu'on peut en dire. Voir la page Wikipedia sur JSONP pour plus d'informations: http://en.wikipedia.org/wiki/JSONP

JSONP n’a rien à voir avec JSON. Voici un exemple simple (mais inutile):

  • Le client crée un élément de script:

  • Le serveur entend une demande pour foo.js?arg=123 . Le serveur fait quelque chose avec cette valeur arg - supposons qu’il le multiplie par 2 (mais il pourrait faire quelque chose d’utile, comme rechercher le nom d’utilisateur de l’utilisateur ayant l’ID utilisateur 123 ). Le serveur renvoie ensuite l' alert(246) contenu de script alert(246) .

  • ** Le client exécute le script à partir du serveur et alerte 246 .

OK, c’est génial si je veux que le client alert , mais comment puis-je faire quelque chose d’utile? Il ne rest plus qu’un dernier bond à franchir: fournissez le nom d’une fonction client en argument:

  • Le client définit une fonction myFunc comme myFunc : function myFunc(a) { alert(a) }

  • Le client fait

    free
web stats