Maison >développement back-end >tutoriel php >Comment JSONP résout-il les problèmes de récupération de données multi-origines ?

Comment JSONP résout-il les problèmes de récupération de données multi-origines ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-07 20:21:14279parcourir

How Does JSONP Solve Cross-Origin Data Retrieval Problems?

JSONP : récupération de données d'origine croisée simplifiée

Lors du traitement de requêtes Web d'origine croisée, la politique de même origine peut poser un défi . JSONP (JSON with Padding) est apparu comme une solution pour résoudre ce problème. Voici une explication étape par étape de la façon d'implémenter une requête jQuery, PHP et JSONP de base pour récupérer des données d'un domaine différent :

Requête jQuery

$.getJSON('http://www.write-about-property.com/jsonp.php?callback=?', { firstname: 'Jeff' }, function(res) {
  alert('Your name is ' + res.fullname);
});

Réponse PHP

<?php
  $fname = $_GET['firstname'];
  if ($fname == 'Jeff') {
    echo $_GET['callback'] . '(' . "{'fullname' : 'Jeff Hansen'}" . ')';
  }
?>

Clé Modifications :

  • ?callback=?: En JSONP, le serveur inclut une fonction de rappel dans la réponse. Le ?rappel=? permet au navigateur de fournir une fonction de rappel générée dynamiquement pour le serveur.
  • $_GET['callback'] . '(' : Le serveur utilise JavaScript pour appeler la fonction de rappel fournie par le navigateur.
  • res.fullname : Le code JavaScript accède au JSON renvoyé par le serveur et affiche le valeur 'nom complet'.

HTML dans Réponse

Oui, vous pouvez stocker du HTML dans le résultat et il sera renvoyé sous forme de chaîne. Le code JavaScript gérera alors le HTML comme approprié.

Exemple d'utilisation.

Cet exemple récupère le nom complet de « Jeff » à partir d'un script PHP situé à « http://www.write-about-property.com/jsonp.php ». Si le nom correspond à « Jeff », le nom complet « Jeff Hansen » est renvoyé.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn