Maison >développement back-end >tutoriel php >Comment JSONP avec jQuery et PHP peut-il résoudre les problèmes de requêtes multi-origines ?

Comment JSONP avec jQuery et PHP peut-il résoudre les problèmes de requêtes multi-origines ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-08 07:13:14654parcourir

How Can JSONP with jQuery and PHP Solve Cross-Origin Request Issues?

Requêtes d'origine croisée avec JSONP : un exemple simple de jQuery et PHP

Dans cet exemple, nous aborderons le défi du cross- requêtes d'origine utilisant JSONP, une technique élégante qui permet la communication entre JavaScript et des serveurs Web de différents domaines.

Imaginons que vous souhaitiez pour envoyer une requête cross-origin depuis un client jQuery vers un serveur PHP et récupérer une réponse personnalisée. Pour y parvenir, nous utiliserons la méthode $.getJSON de jQuery pour lancer une requête JSONP.

Script jQuery :

$.getJSON('http://example.com/jsonp.php?callback=?', 'firstname=Jeff', function(response) {
  alert('Your name is ' + response.fullname);
});

Serveur PHP Script :

<?php
$firstname = $_GET['firstname'];
if ($firstname == 'Jeff') {
  header('Content-Type: application/json');
  echo $_GET['callback'] . '(' . json_encode(['fullname' => 'Jeff Hansen']) . ')';
}
?>

Explication :

Lorsque vous appelez $.getJSON avec une URL contenant '?callback=?', jQuery gère automatiquement le JSONP demande. Le script PHP côté serveur répond avec un objet JSON enveloppé dans un appel de fonction qui correspond au rappel fourni par jQuery. Dans ce cas, le rappel est passé comme premier paramètre dans la requête GET.

Gestion des réponses HTML :

Si vous souhaitez renvoyer du HTML dans la réponse , vous pouvez utiliser une fonction à la place d'un objet JSON au sein du script PHP :

<?php
$firstname = $_GET['firstname'];
if ($firstname == 'Jeff') {
  header('Content-Type: text/html');
  echo '<h1>Welcome, Jeff Hansen!</h1>';
}
?>

Et côté jQuery, vous pouvez gérer la réponse comme tel :

$.getJSON('http://example.com/jsonp.php?callback=?', 'firstname=Jeff', function(response) {
  $('#container').html(response);
});

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